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);