sql >> Database teknologi >  >> RDS >> Mysql

MySQL InnoDB:autoincrement ikke-primær nøgle

Ja du kan. Du skal bare gøre den kolonne til et indeks.

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

Vil indsætte rækker med automatisk stigende værdier for 'testInc'. Dette er dog en virkelig dum ting at gøre.

Du har allerede sagt den rigtige måde at gøre det på:

"Gør comment_id PK og håndhæv integritet gennem et unikt indeks på book_id, timestamp, user_id."

Det er præcis den måde, du skal gøre det på. Ikke alene giver den dig en ordentlig primær nøglenøgle til tabellen, som du skal bruge til fremtidige forespørgsler, den opfylder også princippet om mindste forbløffelse .



  1. Hvordan bruger man Alias ​​i Where-klausulen?

  2. Sådan implementerer du meget tilgængelig PostgreSQL med Single Endpoint til WordPress

  3. Gå til start testdrevet databaseudvikling (TDDD)

  4. Ændring af et Enum-felt ved hjælp af Alembic