是否有可能在一个表中有多个插入后触发器?

时间:2016-01-05 07:02:10

标签: mysql triggers

我有多个用户希望能够触发我的触发器,因为你不能在一个触发器中拥有多个定义器,我决定为每个用户设置多个触发器。

所以在我的一个表中我已经有一个名为system_after_insert的触发器,它被分配给root,现在我想让另一个触发器分配给admin,它将被称为system_after_insert_1,现在它们都有相同的内容并且在同桌。我已经创建了system_after_insert触发器,但现在当我尝试添加system_after_insert_1时,它返回错误说:

  

错误1064:您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   使用附近''在第1行

CREATE DEFINER=`admin`@`localhost` TRIGGER system_after_insert_1 
    AFTER INSERT ON `system_database`.atm_account
    FOR EACH ROW 
BEGIN
    INSERT INTO `log_database`.system_logs
    SET actionDone = 'insert',
        employee = USER(),
        logDate = NOW(),
        tableChange = 'atm_account',
        rowChange = NEW.atmID,
        new_data = concat("Account #",NEW.accountNumber,", Pin:",NEW.pin,", Security Code:",NEW.securityCode,", Withdrawal Limit:",NEW.withdrawalLimit);  

END

不是上面的代码与system_after_insert相同,唯一的区别是触发器名称和定义器。

1 个答案:

答案 0 :(得分:1)

您可以在具有以下组合的表上创建最多6个触发器,直到mysql 5.6 version:

后/前

插入/更新/删除

意思是:

  1. 插入后
  2. 插入前
  3. 更新后
  4. 更新前
  5. 删除后
  6. 删除前
  7. 但是在mysql 5.7.2文档下面显示它是可能的,所以你可以在这里查看是否使用Mysql5.7.2。

    http://dev.mysql.com/doc/refman/5.7/en/create-trigger.html