【问题标题】:query to create trigger in mysql在 mysql 中创建触发器的查询
【发布时间】:2015-01-22 15:41:20
【问题描述】:

我有一个名为 sample_table 的表,它的列是 col_a、col_b、col_c。 我正在尝试在 MySQL 5.6 中创建一个触发器,它将在插入一行时更新 col_c(as concat(col_a,col_b))。我为此编写的查询是:

create trigger trg_sample_table
after insert on sample_table
for each row
begin
set col_c=concat(col_a,col_b)
end;

在运行这个 sql 时,我得到的错误是: ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 6 行的“结束”附近使用正确的语法。

谁能帮我创建一个我需要的触发器?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您需要将其设为before insert。试试这个:

        create trigger trg_sample_table before insert on sample_table for each row
        begin
           set new.col_c=concat(new.col_a,new.col_b);
        end;
    

    您不能修改刚刚插入到after insert 触发器中的行。如果要修改,需要在before insert中完成。

    【讨论】:

    • 非常感谢。它工作正常。但是在将记录插入该表时,我收到一个错误:无法更新存储函数/触发器中的表“sample_table”,因为它已被调用此存储函数/触发器的语句使用。请告诉我这是什么原因造成的?
    猜你喜欢
    • 2017-09-06
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2011-02-03
    • 2016-09-19
    • 2018-11-30
    • 2011-09-02
    • 2013-12-12
    相关资源
    最近更新 更多