Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> TRIGGER BEFORE UPDATE + UPDATE NA TEJ SAMEJ TABELI
llepec
post 15.07.2013, 09:32:20
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 3.07.2013
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam,

Próbuję napisać wyzwalacz, który po update'cie na tabeli, ponownie ją uaktualni (tj. wykona ponowny update)

tabela bledy (id_blad, id_uzytkownik, technologia, data_zgloszenia, data_zamkniecia, opis, id_pracownik, id_przypisanego, id_rodzaj, id_poziom, id_status)

Właściwie to pola tej tabeli nie muszą nas interesować. Chodzi tylko o data_zakmniecia oraz id_status.

Muszę napisać wyzwalacz, który po zmianie id_status na wartość 4, ustawi datę zamknięcia na SYSDATE.


  1. CREATE OR REPLACE TRIGGER zakmniecie_bledu_trig
  2. AFTER UPDATE OF ID_STATUS ON BLEDY
  3. FOR EACH ROW
  4. WHEN (new.ID_STATUS = 4)
  5. BEGIN
  6. UPDATE bledy SET data_zamkniecia = SYSDATE WHERE id_blad = :new.id_blad;
  7. END;


Podczas wykonania, odpowiedniego do uruchomienia wyzwalacza, zapytania, wyskakuje następujący błąd:
SQL Error: ORA-04091: table PROJECT.BLEDY is mutating, trigger/function may not see it
ORA-06512: at "PROJECT.ZAKMNIECIE_BLEDU_TRIG", line 2
ORA-04088: error during execution of trigger 'PROJECT.ZAKMNIECIE_BLEDU_TRIG'
04091. 00000 - "table %s.%s is mutating, trigger/function may not see it"
*Cause: A trigger (or a user defined plsql function that is referenced in
this statement) attempted to look at (or modify) a table that was
in the middle of being modified by the statement which fired it.
*Action: Rewrite the trigger (or function) so it does not read that table.



Moje pytania: Czy da się w ogóle zrobić coś takiego? Jeżeli tak, prosiłbym o wskazówki. Bo treść błędu sugeruje, że niemożliwe jest wykonanie update'a na aktualnie modyfikowanej tabeli...

Pozdrawiam.

Ten post edytował llepec 15.07.2013, 09:45:10
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 22:19