2011-06-27 13 views
12

Rozumiem, że po wywołaniu last_insert_id() przechodzi on przez połączenia, więc otrzymasz id ostatniego wiersza wstawionego w tym samym połączeniu, w którym wywołano last_insert_id(), right ?mysql uzyskiwanie last_insert_id() w wyzwalaczu

A co jeśli wezwam last_insert_id() w wyzwalaczu "AFTER INSERT"?

Co chcę zrobić to w zasadzie ten

DELIMITER $$ 
CREATE TRIGGER sometrigger 
AFTER INSERT ON sometable 
BEGIN 
    INSERT INTO anothertable (id, lastup) VALUES (last_insert_id(), NOW()); 
END $$ 

To bardzo ważne, że id w „anothertable” jest taka sama jak w „sometable” to będzie działać czy należy utworzyć procedurę przechowywaną, że zamiast wstawia do obu tabel?

A może niektóre z wyzwalaczy pobierają wartości z instrukcji wstawiania, które spowodowały uruchomienie wyzwalacza? Nic nie znalazłem.

Odpowiedz

17

Powinieneś być w stanie wykorzystać NEW.{id column name} odnieść się do ostatniej wkładki ID (tak na przykład NEW.id jeśli kolumna automatycznego przyrostu nazywa id.)

+0

To wydaje się działać. To nowe słowo kluczowe było dokładnie tym, czego szukałem. Dzięki. –

Powiązane problemy