Autor | Zpráva | ||
---|---|---|---|
xxxMerlin Profil |
#1 · Zasláno: 11. 12. 2007, 19:32:08
Potřebuji vytvořit trigger pro MYSQL 5.0.45, který by po smazání kategorie opravil u všech podřazených prvků hodnotu ve sloupci nadrazena_kategorie na hodnotu "bez_kategorie". Použil jsem tento kód:
CREATE TRIGGER bez_rubriky AFTER DELETE ON kategorie FOR EACH ROW BEGIN UPDATE clanky SET kategorie = 'bez_kategorie' WHERE nadrazena_kategorie = OLD.nazev; UPDATE kategorie SET kategorie = 'bez_kategorie' WHERE nadrazena_kategorie = OLD.nazev; END; PHPmyadmin mi hlásí chybu.... MySQL hlásí: #1064 - 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 '' at line 4 Jsem bezradný. Za jakoukoli pomoc velmi děkuji. |
||
matak Profil |
#2 · Zasláno: 11. 12. 2007, 19:59:26
a co takhle použít innoDB tabulky a nastavit foreign keys a ON DELETE SET NULL?
|
||
xxxMerlin Profil |
#3 · Zasláno: 11. 12. 2007, 20:05:04
to nejde, protože sloupec nadrazena_kategorie funguje jako cizí klíč
|
||
matak Profil |
#4 · Zasláno: 11. 12. 2007, 20:15:14
nevim jestli si rozumime ale pokud tam vyslovenně nemusíš mít napsáno 'bez_kategorie' a staci ti tam NULL hodnota tak je to spravne ne?
posli strukturu tabulek |
||
xxxMerlin Profil |
#5 · Zasláno: 11. 12. 2007, 20:19:01
hodně sem to zjednudušil, abych to nekomplikoval, ale opravdu tam musím nastavit konkrétní hodnotu a nesmí tam být NULL
|
||
Alphard Profil |
#6 · Zasláno: 11. 12. 2007, 20:22:16
změnil jsi delimiter?
aby středník nekončil trigger, pak by šla jeho syntaxe do kytek |
||
xxxMerlin Profil |
#7 · Zasláno: 11. 12. 2007, 23:13:00
nezměnil. jak?
|
||
matak Profil |
#8 · Zasláno: 11. 12. 2007, 23:17:58
mysql> delimiter //
mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account -> FOR EACH ROW -> BEGIN -> IF NEW.amount < 0 THEN -> SET NEW.amount = 0; -> ELSEIF NEW.amount > 100 THEN -> SET NEW.amount = 100; -> END IF; -> END;// mysql> delimiter ; http://dev.mysql.com/doc/refman/5.0/en/using-triggers.html |
||
Časová prodleva: 16 let
|
0