【问题标题】:is it possible to have multiple after insert trigger in one table?一张表中是否可以有多个插入后触发器?
【发布时间】:2016-04-08 22:28:38
【问题描述】:

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

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

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

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相同,唯一的区别是触发器名称和定义器。

【问题讨论】:

    标签: mysql triggers


    【解决方案1】:

    在 mysql 5.6 版本之前,您可以在具有以下组合的表上创建最多 6 个触发器:

    之后/之前

    插入/更新/删除

    意思:

    1. 插入后
    2. 插入前
    3. 更新后
    4. 更新前
    5. 删除后
    6. 删除前

    但是下面的mysql 5.7.2文档显示它是可能的,所以如果使用Mysql5.7.2,你可以在这里查看。

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

    【讨论】:

    • 如果我想在同一个表中有 3 个 After Insert 触发器怎么办?有可能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2018-12-02
    相关资源
    最近更新 更多