mysql触发器的问题

iriscole 2018-12-24 11:58:11
我想建一个触发器,如果test表中某一行被更新后,把该行的flg字段置成"有更新",该如何写?自己试着写了一个,不大对!
DROP TRIGGER IF EXISTS test_trigger_update;
CREATE test_trigger_update
AFTER update ON test
FOR EACH ROW
BEGIN
update test set flg='有更新' where id = old.id;
END
...全文
212 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
彡梦回念晓 2019-01-02
  • 打赏
  • 举报
回复
这块如果用出发器的话,可能真的陷入死循环,一直在执行update.但是如果加一个字段,alter table tt add uptime timestamp on update current_timestamp ,并且我在根据你的思路编写触发器的时候遇到一个问题,你这样的出发器也就是每条数据只update一次有效,如果重复update的,flg字段一直展示的有更新,那样,将不会展示其效果
Inter_Ares 2019-01-01
  • 打赏
  • 举报
回复
你更新这张表的sql语句里,加上flag=有更新 不就行了?自己触发自己有问题吧。搞不好死循环。
  • 打赏
  • 举报
回复
alter table tt add uptime timestamp on update current_timestamp; 为它加一列字段不行吗;记录最后修改时间。 你的触发器用法有问题,如果这样更新那不死循环了吗。
吉普赛的歌 2018-12-25
  • 打赏
  • 举报
回复 1
drop table if exists test;
create table test(
	id int primary key,
	flg nvarchar(20)
);
insert into test values(1,'');
insert into test values(2,'');

drop trigger if exists trig_test_update;
delimiter $$
CREATE TRIGGER `trig_test_update`
before  update  on `test` for each row
BEGIN
  set new.flg='有更新';
END;
$$

update test set flg='a';

select * from test;
/*
+----+--------+
| id | flg    |
+----+--------+
|  1 | 有更新 |
|  2 | 有更新 |
+----+--------+
*/

iriscole 2018-12-24
  • 打赏
  • 举报
回复
是不是一个表变动了,只能往另外一个表做记录

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧