SQL (MYSQL) TRIGGER błąd 1442 - czy można go obejść?
: 23 listopada 2011, 16:08
Zgodnie z informacją z wątku nie udało mi się zrobić funkcji TRIGGER AFTER/BEFORE UPDATE, która dotyka wiersza w którym wywoływany jest wyzwalacz.
Sam wyzwalacz (uproszczony) wygląda tak:
Funkcja przechodzi, jednakże wysypuje się przy wykonaniu zapytania UPDATE na tabeli tabela - ponieważ chciałaby się wykonywać w kółko.
Czy można jakoś to obejść, coś na kształt:
Czy ktoś miał taki problem i jakoś go obszedł.
Jeszcze oryginalny komunikat błędu którego to dotyczy:
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.