Autor Zpráva
Hloupý Honza
Profil *
Mám tento SQL kód, který hází chybu, ale vůbec nevím proč:

CREATE TRIGGER trigger AFTER UPDATE ON tabulka1 FOR EACH ROW

BEGIN
IF NEW.sloupec = 'hodnota' THEN INSERT INTO tabulka2 (t2sloupec2, t2sloupec3) VALUES(NEW.sloupec2, NEW.sloupec3); END IF;
END;


Co je tam špatně?
Díky.
Kajman_
Profil *
možná je trigger klíčové slovo a není dobré ho používat jako název triggeru. Také je většinou potřeba změni delimiter.
Hloupý Honza
Profil *
Když jsem jméno změnil, tak se situace nezměnila. Háže to tuhle chybu:

#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

Jaký delimiter?
Kajman_
Profil *
Klikněte si na create trigger pro ukázku změny. Musíte nastavit, že středník není oddělovač příkazů.
Hloupý Honza
Profil *
V kódech na té stránce je uveden delimiter ; a delimiter |, ale dvakrát moudrý z toho nejsem. Co mám udělat, aby to fungovalo? Asi mám dlouhé vedení, nicméně nejsem programátor, tak mi to prosím promiňte. :)
Kajman_
Profil *
delimiter |

CREATE TRIGGER `t_tabulka1_au` AFTER UPDATE ON tabulka1 FOR EACH ROW
BEGIN
IF NEW.sloupec = 'hodnota' THEN INSERT INTO tabulka2 (t2sloupec2, t2sloupec3) VALUES(NEW.sloupec2, NEW.sloupec3); END IF;
END;
|

delimiter ;
Hloupý Honza
Profil *
Díky. Ale teď to zase hází tohle: #1227 - Access denied; you need the SUPER privilege for this operation

To se asi musím obrátit na svůj hosting, že?
Mimochodem, kdybych tohle chtěl ve skriptu ošetřit pro případ, že to nebude povolené, jak to zjistím?
Lamicz
Profil
Podle manuálu: MySQL verze 5.0 vyžaduje SUPER práva na spuštění triggeru, od verze 5.1.6 existuje TRIGGER oprávnění u konkrétního uživatele.
Hloupý Honza
Profil *
OK, díky za info.

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: