Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL InnoDB:chave não primária de incremento automático


Sim você pode. Você só precisa fazer essa coluna ser um índice.
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'
);

Irá inserir linhas com valores de incremento automático para 'testInc'. No entanto, isso é uma coisa muito idiota de se fazer.

Você já disse o jeito certo de fazer:

"Faça o PK comment_id e imponha a integridade por meio de um índice exclusivo em book_id, timestamp, user_id."

Essa é exatamente a maneira que você deve fazer. Ele não apenas fornece uma chave primária adequada para a tabela que você precisará para consultas futuras, mas também satisfaz o princípio do menor espanto .