如何实现如下效果?

哥来自东北 2012-06-14 10:20:44
我需要在插入一条记录的时候同时更新相关记录,但是如下的trigger会报错,因为mysql不允许在trigger中update,如何能实现相同的效果?
DELIMITER $$
DROP TRIGGER /*!50032 IF EXISTS */ `tbl_afterinsert_trigger`$$

CREATE
TRIGGER `tbl_afterinsert_trigger` AFTER INSERT ON `tbl`
FOR EACH ROW BEGIN
IF NEW.group_id > 0 THEN
SET @cnt = (SELECT count(*) FROM tbl WHERE is_show = 1 AND group_id = NEW.group_id AND toprank_id = NEW.toprank_id AND time_windows = NEW.time_windows);
IF @cnt > 1 THEN
SELECT id INTO @id FROM tbl WHERE is_show = 1 AND group_id = NEW.group_id AND toprank_id = NEW.toprank_id AND time_windows = NEW.time_windows ORDER BY created_at DESC LIMIT 1;
UPDATE tbl SET is_show = 0 WHERE group_id = NEW.group_id AND toprank_id = NEW.toprank_id AND time_windows = NEW.time_windows AND id <> @id;
END IF;
END IF;
END;
$$
DELIMITER ;
...全文
59 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2012-06-14
  • 打赏
  • 举报
回复
这个没有办法,你只能在你自己的程序中实现了。 MYSQL中在表的触发器中无法对自身表进行操作以免形成递归触发。
Rotel-刘志东 2012-06-14
  • 打赏
  • 举报
回复
trigger实现不了此操作的。
wwwwb 2012-06-14
  • 打赏
  • 举报
回复
在TRIGGER中无法实现,MYSQL不允许在TRIGGER中对本表操作

56,677

社区成员

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

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