2009-02-18 25 views

cevap

52

This Aradığınız şudur:

CREATE TABLE Foo 
(
    FooId INT AUTO_INCREMENT PRIMARY KEY 
); 

CREATE TABLE Bar 
(
    BarId INT AUTO_INCREMENT PRIMARY KEY 
); 

INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 

CREATE TRIGGER FooTrigger AFTER INSERT ON Foo 
    FOR EACH ROW BEGIN 
     INSERT INTO Bar() VALUES(); 
    END; 

INSERT INTO Foo() VALUES(); SELECT LAST_INSERT_ID(); 

Bu döndürür:: OP'ın yorumuna cevaben

LAST_INSERT_ID() 

, aşağıdaki tezgah testi oluşturdu

+------------------+ 
| LAST_INSERT_ID() | 
+------------------+ 
|    1 | 
+------------------+ 

Yani LAST_INSERT_ID() orijinal tablosunu kullanır ve tabloyu değil INSERT tetiğin içine yerleştirildi.

Düzeltme: Tüm bu süreden sonra, sonuçta doğru olan sonuca rağmen, yanıtımın SELECT LAST_INSERT_ID() sonucunun yanlış olduğunu anladım. Sonucu doğru değer olarak güncelledim.

+0

Teşekkür Sean basın. Verileri eklediğim tablonun veriyi başka bir tabloya ekleyen bir tetikleyici de var mı? Orijinal tablonun kimliğini veya tetikleyiciden etkilenen kimliği mi döndürür? – kristof

+0

Bu – kristof

+0

test için teşekkürler Sean Teşekkürler ... Cevap için –

0

açık MySQL komut türü SELECT LAST_INSERT_ID(); sonra