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

MySQL SELECT LAST_INSERT_ID() per la chiave composta. È possibile?

Sì. Non puoi avere più campi di incremento automatico in una singola tabella.

CREATE TABLE foo (
  id1 int(11) NOT NULL auto_increment,
  id2 int(11) NOT NULL default '0',
  PRIMARY KEY  (id1, id2)
);

INSERT INTO foo VALUES (DEFAULT, 2);

SELECT LAST_INSERT_ID(); -- returns 1, the value generated for id1

LAST_INSERT_ID() restituisce il valore solo per una colonna dichiarata AUTO_INCREMENT . Non esiste alcuna funzione per restituire il valore in una chiave primaria composta che non era generato dal sistema. Dovresti già conoscere quel valore, dato che l'hai appena fornito in un INSERT dichiarazione. Il caso difficile sarebbe quando un trigger o qualcosa sovrascrive il valore.