2011-10-17 6 views
1

donc j'ai la requête suivante:erreur de syntaxe avec déclenchement mysql requête

CREATE TRIGGER `before_delete` 
    BEFORE DELETE ON `abc` FOR EACH ROW 
    BEGIN 
     DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
     DELETE FROM ghi WHERE OLD.id = objID; 
    END; 

mais mysql se plaint qu'il ya erreur de syntaxe près de « END » à la ligne 1 ....

qu'est-ce que je fais faux?

Répondre

4

Vous devez utiliser l'astuce DELIMTIER pour inclure plusieurs instructions dans un bloc de procédure. Sinon, il ne peut pas faire la différence entre la fin de votre procédure et la fin des instructions à l'intérieur. Sur la page documentation, un exemple utilise le mot clé delimiter.

Pour vous épargner la peine d'aller à cette page et en regardant autour, je pense que cela va corriger:

DELIMITER $$ 
CREATE TRIGGER `before_delete` 
BEFORE DELETE ON `abc` FOR EACH ROW 
BEGIN 
    DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
    DELETE FROM ghi WHERE OLD.id = objID; 
END $$ 
DELIMITER ;