2009-07-20 21 views
21

Ahora mismo, tengo una tabla cuya clave principal es un campo auto_increment. Sin embargo, necesito configurar la clave principal como username, date (para garantizar que no pueda haber un nombre de usuario duplicado con una fecha).Necesito autoincrementar un campo en MySQL que no sea la clave principal

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

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

Gracias!

Respuesta

16

Simplemente configure un índice único en compuesto de (nombre de usuario, fecha).

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

Alternativamente, se puede tratar de

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

y creo que en este último caso se necesita esas columnas que deben declararse no NULL.

+0

que lo hace, gracias! – littleK

+0

@littleK tengo dos campos Quiero establecer uno como clave principal y otro como un incremento automático ¿es posible? –

1

cambiar la clave principal actual a ser una clave única vez:

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

AUTO_INCREMENT funcionará normalmente después de eso sin ningún problema. También debe colocar una clave única en el campo AUTO_INCREMENT así, utilizar para su manejo consecutivas:

ALTER TABLE table ADD UNIQUE KEY(id); 
+0

Traté de hacerlo de esta manera, sin embargo, todavía recibía el error: # 1075 - Definición incorrecta de la tabla; solo puede haber una columna auto y debe definirse como una clave – littleK

1

usar 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 dispone de la tabla, y sólo quieren agregar una restricción única en usuario + thedate, ejecute

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

sé que esto es cuestión de edad, aquí es cómo he resuelto el problema -

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

Solución útil, ¡gracias! –

Cuestiones relacionadas