Oui. Vous ne pouvez pas avoir plusieurs champs à incrémentation automatique dans une seule table.
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()
renvoie la valeur uniquement pour une colonne déclarée AUTO_INCREMENT
. Il n'y a pas de fonction pour renvoyer la valeur dans une clé primaire composée qui n'était pas généré par le système. Vous devriez déjà connaître cette valeur, puisque vous venez de la donner dans un INSERT
déclaration. Le cas délicat serait lorsqu'un déclencheur ou quelque chose remplace la valeur.