2012-12-18 3 views
4

Essayer d'exécuter le premier déclencheur qui devrait insérer la valeur d'une table à une autre seulement si les données sont nouvelles. Ci-dessous mon code:MySQL Trigger: IF ELSE erreur

BEGIN 
    DECLARE email VARCHAR(30); 
    INSERT INTO data_audit SET data_audit_id = OLD.id; 
    IF (NEW.email = OLD.email) THEN 
    email = NULL; 
    ELSE 
    email = OLD.email; 
    END IF; 
    UPDATE corporate_audit SET email = email WHERE corporate_audit_id = last_insert_id(); 
END 

J'obtiens l'erreur suivante:

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '= NULL; SINON email = OLD.email; FIN SI; MISE À JOUR corporate_audit SET 'à la ligne 5

Et quand j'exécuter du code sans bloc IF-THEN et stocker OLD.email alors il suffit d'insérer une nouvelle ID dans le tableau d'audit, mais ne met pas à jour le terrain. S'il vous plaît me guider

+0

pas ça n'a pas – Volatil3

Répondre

6

vous manque SET

IF (NEW.email = OLD.email) THEN 
     SET email = NULL; 
    ELSE 
     SET email = OLD.email; 
    END IF; 
+2

impressionnant. Merci mec. J'aime vraiment ma famille Stackoverflow qui est toujours en place pour l'aide désintéressée. – Volatil3

+0

vous êtes les bienvenus! –

+0

Désolé, je vous dérange à nouveau. Comme j'utilise le déclencheur AFTER UPDATE, il ne me permet pas de mettre à jour la valeur de colonne de la table déclenchée. – Volatil3