Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: trigger after insert nie dziala
Forum PHP.pl > Forum > Bazy danych > MySQL
misty
hej, probuje napisac prosty trigger ktory bedzie mi updatowal pole po operacji insert. w przypadku "before insert" wszystko ladnie dziala:

  1. CREATE TRIGGER test_trigger before INSERT ON test FOR each row SET NEW.test_id = 2;


i jest ok.

ale ja potrzebuje aby bylo to "after insert" bo docelowo moj warunek ma wygladac mneij wiecej tak:
  1. SET test_id = (SELECT something FROM test WHERE..)


wiec probowalam cos takiego:
  1. CREATE TRIGGER test_trigger after INSERT ON test FOR each row UPDATE test SET test_id = 3;


ale wtedy, jak probuje robic jakiegos insert'a np:
  1. INSERT INTO test(name) VALUES ('Jan Kowalski');


to dostaje:

Can't update table test in stored function /trigger because it is already used by statement which invoked this stored function/trigger

czy ktos z Was wie moze w czym tkwi problem? i moglby mnie nakierowac na wlasciwy trop?

pozdrawiam,
misty
nospor
Komunikat błędu jest chyba dość wyraźny: nie możesz w tym trigerze wkładać danych do tej samej tabeli. Koniec kropka smile.gif
misty
no wlasnie doczytalam o tym na jakims forum. Ale powiedz mi, to ja nie moge zrobic czegos takiego, ze jesli robie insert do tabeli to po insercie, robie update od razu? na tym wierszu ostatnio dodanym? na pewno jakos sie musi dac.. moze masz jakies wskazowki?
nospor
Robisz to w php? To po wykonaniu insert w php zrob kolejny update w php smile.gif
misty
nie, tego insert'a wykonuje jakis program X (do ktorego nie mam dostepu). Chyba w javie napisany. no i nie ma mozliwosci aby on to wykonywal. Musze napisac triggera, ktory zadziala tak, ze jak program X zrobi insert'a do tej tabeli, to wywola sie trigger i sobie zrobi update na jednym z pol. Da sie to jakos?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.