2008-12-16 7 views

Répondre

5

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

+0

"Vous ne pouvez pas avoir plusieurs champs d'incrémentation automatique dans une seule table." Je ne le savais pas, alors j'ai essayé de créer une table avec deux champs d'auto-incrémentation, et j'ai eu cette erreur: définition de table incorrecte; il ne peut y avoir qu'une seule colonne automatique et elle doit être définie comme une clé. – Liam

+0

Donc, 7 ans plus tard, la réponse est valable. –