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

MySQL SELECT LAST_INSERT_ID() for sammensat nøgle. Er det muligt?

Ja. Du kan ikke have flere automatiske inkrementeringsfelter i en enkelt tabel.

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() returnerer kun værdien for en kolonne erklæret AUTO_INCREMENT . Der er ingen funktion til at returnere værdien i en sammensat primærnøgle, som ikke var genereret af systemet. Du burde allerede kende den værdi, da du lige har givet den i en INSERT udmelding. Det vanskelige tilfælde ville være, når en trigger eller noget tilsidesætter værdien.




  1. MySQL CONCAT returnerer NULL, hvis et felt indeholder NULL

  2. Lære 2 og Mange-til-mange linktabel med et ekstra felt

  3. PDO-understøttelse af flere forespørgsler (PDO_MYSQL, PDO_MYSQLND)

  4. PHP singleton database forbindelsesmønster