sql >> Databasteknik >  >> RDS >> Mysql

MySQL InnoDB:autoinkrement icke-primär nyckel

Jo det kan du. Du behöver bara göra den kolumnen ett 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'
);

Kommer att infoga rader med automatiskt ökande värden för 'testInc'. Men detta är en riktigt dum sak att göra.

Du har redan sagt det rätta sättet att göra det:

"Gör comment_id PK och framtvinga integritet genom ett unikt index på book_id, timestamp, user_id."

Det är precis så du borde göra. Det ger dig inte bara en korrekt primärnyckel för tabellen som du behöver för framtida frågor, den uppfyller även principen om minsta häpnad .



  1. dela alfa och numerisk med sql

  2. EXP() Funktion i Oracle

  3. MySQL - Betydelse av PRIMÄRNYCKEL, UNIK NYCKEL och NYCKEL när de används tillsammans när du skapar en tabell

  4. Importera CSV till MySQL