sql >> Base de Datos >  >> RDS >> Mysql

MySQL InnoDB:clave no principal de incremento automático

Sí tu puedes. Solo necesita hacer que esa columna sea un índice.

CREATE TABLE `test` (
  `testID` int(11) NOT NULL,
  `string` varchar(45) DEFAULT NULL,
  `testInc` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`testID`),
  KEY `testInc` (`testInc`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;


insert into test(
  testID,
 string
)
values (
1,
    'Hello'
);


insert into test( 
testID,
 string
)
values (
2,
    'world'
);

Insertará filas con valores de incremento automático para 'testInc'. Sin embargo, esto es algo realmente tonto.

Ya dijiste la forma correcta de hacerlo:

"Haga el PK de comment_id y haga cumplir la integridad a través de un índice único en book_id, timestamp, user_id".

Esa es exactamente la forma en que deberías hacerlo. No solo le proporciona una clave principal adecuada para la tabla que necesitará para futuras consultas, sino que también satisface el principio del mínimo asombro .