描述中写的语法对于MySQL触发器是否正确?它会起作用吗?

时间:2010-03-26 04:43:22

标签: mysql syntax triggers

描述中编写的语法对于MySQL触发器是否正确?它会起作用吗?

CREATE OR REPLACE TRIGGER myTableAuditTrigger
  2  AFTER INSERT OR DELETE OR UPDATE ON myTable
  3  FOR EACH ROW
  4  BEGIN
  5    IF INSERTING THEN
  6      INSERT INTO myTableAudit (id, Operation, NewName, NewPhone)
  7      VALUES (1, 'Insert ', :NEW.Name, :NEW.PhoneNo);
  8    ELSIF DELETING THEN
  9      INSERT INTO myTableAudit (id, Operation, OldName, OldPhone)
 10      VALUES (1, 'Delete ', :OLD.Name, :OLD.PhoneNo);
 11    ELSIF UPDATING THEN
 12      INSERT INTO myTableAudit (id, Operation,
 13                               OldName, OldPhone, NewName, NewPhone)
 14      VALUES (1, 'Update ',
 15              :OLD.Name, :OLD.PhoneNo, :NEW.Name, :NEW.PhoneNo);
 16    END IF;
 17  END;
 18  /

1 个答案:

答案 0 :(得分:2)

检查MySQL文档中的CREATE TRIGGER语句,您将看到不允许多个触发事件。您需要为插入,更新和删除创建单独的触发器。更好的方法可能是使用binary logginggeneral query log