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

MySQL InnoDB:incremento automatico della chiave non primaria

Si, puoi. Devi solo fare in modo che quella colonna sia un indice.

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

Inserisce righe con valori di incremento automatico per 'testInc'. Tuttavia questa è una cosa davvero stupida da fare.

Hai già detto il modo giusto per farlo:

"Crea la PK comment_id e applica l'integrità attraverso un indice univoco su book_id, timestamp, user_id."

Questo è esattamente il modo in cui dovresti farlo. Non solo fornisce una chiave primaria adeguata per la tabella di cui avrai bisogno per le query future, ma soddisfa anche il principio del minimo stupore .