sql >> Base de Datos >  >> RDS >> Mysql

MySQL SELECCIONE LAST_INSERT_ID() para clave compuesta. ¿Es posible?

Sí. No puede tener múltiples campos de incremento automático en una sola tabla.

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() devuelve el valor solo para una columna declarada AUTO_INCREMENT . No hay ninguna función para devolver el valor en una clave primaria compuesta que no era generado por el sistema. Ya deberías saber ese valor, ya que lo acabas de dar en un INSERT declaración. El caso complicado sería cuando un disparador o algo anula el valor.