4

データが新しい場合にのみ、あるテーブルの値を別のテーブルに挿入する必要がある最初のトリガーを実行しようとしています。以下は私のコードです:

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

次のエラーが発生します:

SQL構文にエラーがあります。'= NULLの近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。ELSE email = OLD.email; END IF; 5行目でcorporate_auditSET'を更新します

また、IF-THENブロックなしでコードを実行し、OLD.emailを保存すると、監査テーブルに新しいIDが挿入されるだけで、フィールドは更新されません。案内してください

4

1 に答える 1

7

あなたは行方不明ですSET

   IF (NEW.email = OLD.email) THEN
      SET email = NULL;
   ELSE
      SET email = OLD.email;
   END IF;
于 2012-12-18T14:51:39.783 に答える