Autor Zpráva
xxxMerlin
Profil
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
a co takhle použít innoDB tabulky a nastavit foreign keys a ON DELETE SET NULL?
xxxMerlin
Profil
to nejde, protože sloupec nadrazena_kategorie funguje jako cizí klíč
matak
Profil
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
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
změnil jsi delimiter?
aby středník nekončil trigger, pak by šla jeho syntaxe do kytek
xxxMerlin
Profil
nezměnil. jak?
matak
Profil
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: