Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL SELECT LAST_INSERT_ID() für zusammengesetzten Schlüssel. Ist es möglich?

Ja. Sie können nicht mehrere Auto-Increment-Felder in einer einzelnen Tabelle haben.

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() gibt den Wert nur für eine als AUTO_INCREMENT deklarierte Spalte zurück . Es gibt keine Funktion, um den Wert in einem zusammengesetzten Primärschlüssel zurückzugeben, der nicht war vom System generiert. Sie sollten diesen Wert bereits kennen, da Sie ihn gerade in einem INSERT angegeben haben Erklärung. Der knifflige Fall wäre, wenn ein Trigger oder etwas den Wert überschreibt.