Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trigger AFTER INSERT OR UPDATE OR DELETE, Błąd przy tworzeniu triggera
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam ponownie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Tym razem mam problem z utworzeniem triggera. Przewertowałem sporą część linków dotyczących tworzenia triggerów ale za Chiny nie mogę sobie poradzić z małą pierdołą. Chciałbym aby trigger był odpalany po wpisaniu, modyfikacji lub usunięciu danych z tabeli. W związku z czym napisałem:
  1. DELIMITER |
  2. CREATE TRIGGER update_category_items_t AFTER INSERT OR UPDATE OR DELETE ON card_category FOR EACH ROW
  3. BEGIN END|
  4. DELIMITER ;

co kończy się błędem:
Cytat
Script line: 21 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR UPDATE OR DELETE ON card_category FOR EACH ROW
BEGIN

END' at line 1

O co chodzi? Próbowałem również magicznych konstrukcji (gdzieś znalazłem taki przykład) z:
  1. ... AFTER INSERT ON card_category OR UPDATE ON card_category ...

oraz:
  1. ... AFTER INSERT OR AFTER UPDATE OR AFTER DELETE ...

co również nie działa.

Moja wersja MySQL to 5.0.27.

Pozdrawiam,
pion

// EDIT:
Jest jeszcze ciekawsze zjawisko! Na razie chciałem utworzyć 3 osobne triggery, w związku z czym zrobiłem to tak:
  1. DROP TRIGGER update_category_items_tai;
  2. DROP TRIGGER update_category_items_tau; -- linia 19
  3. DROP TRIGGER update_category_items_tad; -- linia 20
  4.  
  5. DELIMITER |
  6. CREATE TRIGGER update_category_items_tai AFTER INSERT ON card_category FOR EACH ROW
  7. BEGIN CALL update_category_items (NEW.category_id);
  8. END|
  9.  
  10. CREATE TRIGGER update_category_items_tau AFTER UPDATE ON card_category FOR EACH ROW -- linia 28
  11. BEGIN CALL update_category_items (OLD.category_id);
  12. CALL update_category_items (NEW.category_id);
  13. END|
  14.  
  15. CREATE TRIGGER update_category_items_tad AFTER DELETE ON card_category FOR EACH ROW -- linia 34
  16. BEGIN CALL update_category_items (OLD.category_id);
  17. END|
  18. DELIMITER ;

Wywołaniem powyższego kodu skutkuje w:
Cytat
Script line: 19 Trigger does not exist
Script line: 20 Trigger does not exist
Script line: 28 Trigger already exists
Script line: 34 Trigger already exists

Nie rozumiem tu czegoś: dlaczego najpierw wypisywane jest, że trigger nie istnieje, a później, że już istnieje? W rezultacie zawsze dodawany jest tylko pierwszy trigger czyli update_category_items_tai.

Co robię źle? (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

Ten post edytował phpion 21.06.2008, 10:33:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
slawcio
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 23.06.2008
Skąd: lublin

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


siema
1. masz starą wersje mysql
2. triggery weszły bodajże od wersji 5.0.34
3. z tego co wiem nie da sie utworzyć triggera który jednoczesnie działa na insert, update i delete (ale tego nie jestem pewien)
4. pozdrawiam
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(slawcio @ 23.06.2008, 20:26:59 ) *
1. masz starą wersje mysql

No idealnie świeża to ona nie jest ale na serwerze i tak jest starsza.

Cytat(slawcio @ 23.06.2008, 20:26:59 ) *
2. triggery weszły bodajże od wersji 5.0.34

Nie, dostępne są od wersji 5.0.2.

Cytat(slawcio @ 23.06.2008, 20:26:59 ) *
3. z tego co wiem nie da sie utworzyć triggera który jednoczesnie działa na insert, update i delete (ale tego nie jestem pewien)

No właśnie się nie da. *

Cytat(slawcio @ 23.06.2008, 20:26:59 ) *
4. pozdrawiam

Ja również (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

* finalnie projekt powstaje na PostgreSQL, w którym to nie ma najmniejszych problemów z triggerami.
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: 10.10.2025 - 20:46