Sam wyzwalacz (uproszczony) wygląda tak:
Kod: Zaznacz cały
CREATE TRIGGER after_tabela_update
AFTER UPDATE ON tabela
FOR EACH ROW
BEGIN
UPDATE tabela as t1 , tabela as t2
set t1.kolumna1 = t2.kolumna1
WHERE jakis_warunek;
END
Czy można jakoś to obejść, coś na kształt:
Kod: Zaznacz cały
CREATE TRIGGER after_tabela_update
AFTER UPDATE ON tabela [B]WHERE tabela.kolumna = 'wartosc' #czyli aby TRIGGER dzialal tylko gdy UPDATE wykonywany jest na okreslonym warunkiem wierszu[/B]
FOR EACH ROW
BEGIN
UPDATE tabela as t1 , tabela as t2
set t1.kolumna1 = t2.kolumna1
WHERE jakis_warunek;
END [B]
exit() # ? funkcja która nie pozwalała by na odpalenie kolejnego wyzwalacza [/B]
Jeszcze oryginalny komunikat błędu którego to dotyczy:
#1442 - Can't update table 'tabela' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.