Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL InnoDB:Nicht-Primärschlüssel automatisch inkrementieren

Ja, du kannst. Sie müssen diese Spalte nur zu einem Index machen.

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

Fügt Zeilen mit automatisch inkrementierenden Werten für „testInc“ ein. Dies ist jedoch eine wirklich dumme Sache.

Sie haben bereits gesagt, wie man es richtig macht:

"Machen Sie die comment_id PK und erzwingen Sie die Integrität durch einen eindeutigen Index für book_id, timestamp, user_id."

Genau so solltest du es machen. Es liefert Ihnen nicht nur einen richtigen Primärschlüsselschlüssel für die Tabelle, den Sie für zukünftige Abfragen benötigen, es erfüllt auch das Prinzip des geringsten Erstaunens .