![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Witam ponownie
![]() 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:
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:
oraz:
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:
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? ![]() Ten post edytował phpion 21.06.2008, 10:33:21 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 288 Pomógł: 12 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
spotkałem się kiedyś z dziwnym też problemem, że w nazwie nie może być za dużo znaków '_'. Spróbuj nazwać triggery inaczej. To jedyne co przychodzi mi do głowy.
Bo z tego co widzę wszystkie 3 triggery: update_category_items_tai update_category_items_tau update_category_items_tad system widzi jako jeden. Ten post edytował tommy4 21.06.2008, 11:30:38 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Niestety nadal to samo :| Ogólnie to wielka kupa, że nie można dać po prostu AFTER INSERT OR UPDATE OR DELETE *... Może ktoś jeszcze będzie miał jakieś pomysły?
Cytat Bo z tego co widzę wszystkie 3 triggery: update_category_items_tai update_category_items_tau update_category_items_tad system widzi jako jeden. Dałem nazwy t1, r2, e3 i to samo... * za http://www.brainbell.com/tutorials/MySQL/C...ng_Triggers.htm Cytat A single trigger cannot be associated with multiple events or multiple tables, so if you need a trigger to be executed for both INSERT and UPDATE operations, you'll need to define two triggers. // EDIT: Wygląda na to, że pozamiatane: http://lists.mysql.com/commits/8316 Cytat We don't allow creation of several triggers of the same type yet W takim razie takie triggery to sobie można wsadzić... Ten post edytował phpion 21.06.2008, 17:37:50 |
|
|
![]()
Post
#4
|
|
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 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
1. masz starą wersje mysql No idealnie świeża to ona nie jest ale na serwerze i tak jest starsza. 2. triggery weszły bodajże od wersji 5.0.34 Nie, dostępne są od wersji 5.0.2. 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. * 4. pozdrawiam Ja również ![]() * finalnie projekt powstaje na PostgreSQL, w którym to nie ma najmniejszych problemów z triggerami. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 1 Dołączył: 23.06.2008 Skąd: lublin Ostrzeżenie: (0%) ![]() ![]() |
na 100 % masz za stara wersję MySQL, bo też długo spędziliśmy czasu zanim obczailiśmy dlaczego nam nie działa, a mieliśmy podobny problem...
... i jeszcze raz pozdrawiam |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ok, pewnie masz rację, ale (jak już pisałem) na serwerze i tak jest dostępna jeszcze starsza wersja (5.0.22) więc to i tak nie miałoby sensu. Co nie zmienia jednak faktu, że zachowanie:
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 jest co najmniej niezrozumiałe... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 00:53 |