2010-11-28 55 views
0

Cela peut être une réponse vraiment facile. J'ai fait beaucoup de choses sur la base de données pendant un moment. J'essaye d'obtenir la valeur auto_increment d'une table insérée dans la valeur sur une autre table. Y a-t-il un moyen facile de faire ça. Pour exemple, je l'ai fait:mysql Obtenir la même valeur auto_increment dans un autre

CREATE TABLE table_a (
id int NOT NULL AUTO_INCREMENT, 
a_value varchar(4), 
PRIMARY KEY (id) 
); 

CREATE TABLE table_b (
id int NOT NULL, 
b_value varchar(15), 
FOREIGN KEY (id) REFERENCES table_a (id) 
); 

Maintenant, je veux insérer des valeurs dans la table mais je voudrais les valeurs « id » pour table_a et table_b être le même. J'ai jusqu'à présent:

INSERT INTO table_a VALUES (NULL, 'foobar'); 

Mais je ne sais pas comment s'y prendre pour extraire le numéro « id » auto_incermented de table_a dans la valeur « id » de table_b. J'ai regardé SELECT @id = LAST_INSERT_ID() mais je n'arrive pas à le faire fonctionner.

Répondre

0

Vous ne pouvez pas faire cela en même temps. Vous devez d'abord insérer dans la première table:

INSERT INTO table_a (a_value) VALUES ('foobar'); 

puis insérez dans le second en utilisant l'identifiant généré:

INSERT INTO table_b (id, b_value) VALUES (@@IDENTITY, 'foobar'); 
+0

J'ai trouvé que le @identity ne fonctionnait pas mais donnait des indices et était capable de trouver la réponse. – freddy6

0

LAST_INSERT_ID() et pas besoin de la partie instruction select.