开发者社区> 问答> 正文

mysql下创建触发器碰到的问题

数据库存在使用如下语句创建的一个数据表:
create table tb_name (t_id int, t_name varchar(20));
请创建一个触发器,实现无论用户向表中添加什么数据字段,t_name 的内容都是"HelloWorld".
我的mysql语句如下:
`CREATE TRIGGER ins_su BEFORE INSERT ON tb_name FOR EACH ROW
INSERT INTO tb_name SET t_name = "HelloWorld";`
但是在向t_id 插入一个数据时:
INSERT INTO tb_name (t_id) VALUES (1);
报出如下错误:
Can't update table 'tb_name' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
不是太明白错误原因,不知道正确的语句如何写?麻烦哪位高手解释一下

展开
收起
落地花开啦 2016-02-13 13:40:49 2533 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    你在INSERT的触发器里又执行一个INSERT,那这个INSERT又会触发触发器,所以就死循环了,这样不行。
    另外mysql中,如果一个表在触发器中是不能改变这个表的状态的。
    要改变插入的值,你只要写new.t_name= "HelloWorld" 就行了。

    2019-07-17 18:41:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像