primary primaria nombre llave letra generar foranea eliminar cómo código con compuesta clave autoincrementable auto_increment agregar mysql primary-key auto-increment

primaria - eliminar primary key mysql



Necesito auto_incrementar un campo en MySQL que no sea la clave principal (4)

Cambia tu clave principal actual para que sea una clave única en su lugar:

ALTER TABLE table DROP PRIMARY KEY, ADD UNIQUE KEY(username,date);

El auto_increment funcionará normalmente después de eso sin ningún problema. También debe colocar una clave única en el campo auto_increment, para usar en el manejo de su fila:

ALTER TABLE table ADD UNIQUE KEY(id);

En este momento, tengo una tabla cuya clave principal es un campo auto_increment . Sin embargo, debo configurar la clave principal como username , date (para garantizar que no pueda haber un nombre de usuario duplicado con una fecha).

Necesito el campo auto_increment , sin embargo, para realizar cambios en la información de la fila (agregar y eliminar).

¿Qué se hace normalmente con esta situación?

¡Gracias!


Sé que esta es una vieja pregunta. Así es como resolví el problema.

ALTER TABLE `student_info` ADD `sn` INT(3) UNIQUE NOT NULL AUTO_INCREMENT FIRST


Solo establece un índice único en compuesto de (nombre de usuario, fecha).

ALTER TABLE `table` ADD UNIQUE INDEX `name` (`username`, `date`);

Alternativamente, puedes intentar

ALTER TABLE `table` DROP PRIMARY KEY, ADD PRIMARY KEY(`username`,`date`);

y creo que en este último caso necesita que esas columnas se declaren NOT NULL.


Use algo como:

CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, user VARCHAR(32) NOT NULL, thedate DATE NOT NULL, UNIQUE(user,thedate) );

Si ya tiene la tabla y solo desea agregar una restricción única en user + thedate, ejecute

ALTER TABLE users ADD UNIQUE KEY user_date_idx (user, thedate);