sql >> Databasteknik >  >> RDS >> Mysql

MySQL SELECT LAST_INSERT_ID() för sammansatt nyckel. Är det möjligt?

Ja. Du kan inte ha flera fält för automatisk ökning i en enda tabell.

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() returnerar endast värdet för en kolumn som deklareras AUTO_INCREMENT . Det finns ingen funktion för att returnera värdet i en sammansatt primärnyckel som inte var som genereras av systemet. Du borde veta det värdet redan, eftersom du precis gav det i en INSERT påstående. Det knepiga fallet skulle vara när en trigger eller något åsidosätter värdet.




  1. MySQL LOAD DATA LOCAL INFILE exempel i python?

  2. VÄLJ en kolumn om den andra är null

  3. Java - Hur anropar man en orakelprocedur med anpassade typer?

  4. Är mysqli_real_escape_string tillräckligt för att undvika SQL-injektion eller andra SQL-attacker?