sql >> Databáze >  >> RDS >> Mysql

MySQL InnoDB:autoinkrementace neprimárního klíče

Ano můžeš. Stačí, aby tento sloupec byl indexem.

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

Vloží řádky s automatickým zvyšováním hodnot pro 'testInc'. To je však opravdu hloupá věc.

Už jste řekli správný způsob, jak to udělat:

"Vytvořte PK comment_id a vynucujte integritu prostřednictvím jedinečného indexu na book_id, timestamp, user_id."

Přesně tak byste to měli dělat. Nejen, že vám poskytuje správný primární klíč pro tabulku, který budete potřebovat pro budoucí dotazy, ale také vyhovuje princip nejmenšího údivu .



  1. Jak vypsat dostupné instance serverů SQL pomocí SMO v C#?

  2. Výkon OLTP od PostgreSQL 8.3

  3. PHP MySql a geolokace

  4. Jak NAČÍST DATOVÝ INFILE v mysql s prvním sloupcem Auto Increment?