首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

怎么实现如下效果

2012-06-16 
如何实现如下效果?我需要在插入一条记录的时候同时更新相关记录,但是如下的trigger会报错,因为mysql不允许

如何实现如下效果?
我需要在插入一条记录的时候同时更新相关记录,但是如下的trigger会报错,因为mysql不允许在trigger中update,如何能实现相同的效果?

SQL code
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 ;


[解决办法]
在TRIGGER中无法实现,MYSQL不允许在TRIGGER中对本表操作
[解决办法]
trigger实现不了此操作的。
[解决办法]
这个没有办法,你只能在你自己的程序中实现了。 MYSQL中在表的触发器中无法对自身表进行操作以免形成递归触发。

热点排行