Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak modyfikować tabele z ustawionym na niej triggerem
woj_tas
post
Post #1





Grupa: Zarejestrowani
Postów: 230
Pomógł: 36
Dołączył: 31.03.2006
Skąd: Zielona Góra

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


Witam.

Mam tabele odpowiedzi (id, tytul, kolejnosc) oraz ustawionego na niej wyzwalacz:
  1. CREATE OR REPLACE
  2. TRIGGER ODPOWIEDZI_TRG
  3. AFTER DELETE ON ODPOWIEDZI
  4. FOR EACH ROW
  5. DECLARE
  6. nr_pytania NUMBER(4);
  7. nr_kolejnosc NUMBER(4);
  8. BEGIN SELECT pytanie_id, kolejnosc INTO nr_pytania, nr_kolejnosc FROM odpowiedzi WHERE odpowiedz_id = :OLD.odpowiedz_id;
  9. UPDATE odpowiedzi SET kolejnosc = kolejnosc-1 WHERE (kolejnosc > nr_kolejnosc AND pytanie_id = nr_pytania);
  10. END;

Jak widac chciałbym w wyzwalaczu zmodyfikować kolumnę kolejność. Niestety otrzymuję błąd:
Cytat
tabela ODPOWIEDZI ulega mutacji, wyzwalacz/funkcja może tego nie widzieć


Pytanie brzmi w jaki sposób mogę działać na tabeli na której utworzony jest wyzwalacz?

Dodam tylko że znalazłem odpowiedź aby usunąć FOR EACH ROW ale niestety wtedy nie będę miał dostępu do :NEW i :OLD

Ten post edytował woj_tas 3.04.2008, 22:39:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
redman2
post
Post #2





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

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


Wydaje mi sie, ze nie mozna dzialac na tabeli na ktorej masz ustawiony trigger. Poza tym to zapytanie nie ma sensu, jako ze nie wywolujesz komedny DELETE. Jaki bylby sens ustawiac trigger na siebie samego ?

Wejdz do EM i w dziale TRIGGER pozamieniaj tabele i zobacz czy sie skompiluje.

Powodzenia
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.04.2026 - 20:35