Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL InnoDB :auto-incrémentation de la clé non primaire

Oui, vous pouvez. Il vous suffit de faire de cette colonne un index.

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

Insèrera des lignes avec des valeurs auto-incrémentées pour 'testInc'. Cependant, c'est une chose vraiment stupide à faire.

Vous avez déjà dit la bonne façon de le faire :

"Créez le comment_id PK et appliquez l'intégrité grâce à un index unique sur book_id, timestamp, user_id."

C'est exactement la façon dont vous devriez procéder. Non seulement il vous fournit une clé primaire appropriée pour la table dont vous aurez besoin pour les requêtes futures, mais il satisfait également le principe du moindre étonnement .