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

求教数据库触发器,该怎么解决

2012-02-13 
求教数据库触发器我在的目的是在更新完表a的一个字段m后将该更新的行转移到其他的一个表中然后删除本表的

求教数据库触发器
我在的目的是在更新完表a的一个字段m后将该更新的行转移到其他的一个表中然后删除本表的这个行
代码如下
CREATE TRIGGER `removeoffline` AFTER UPDATE ON `radacct` FOR EACH ROW if not isnull(new.acctstoptime) then
call AcctToAcct2(new.radacctid);
end if;

存储过程如下AcctToAcct2
CREATE PROCEDURE `AcctToAcct2`(id varchar(64))
BEGIN
INSERT INTO radacct2 (SELECT * FROM radacct WHERE radacct.radacctid = id);
delete FROM radacct WHERE radacct.radacctid = id;
END

在触发的时候出现了如下的错误提示
Err] 1442 - Can't update table 'radacct' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

请问问题出在哪里呀?


[解决办法]
mysql语法不允许触发器内再更新本表 换种方法吧
[解决办法]
CREATE TRIGGER `removeoffline` AFTER UPDATE ON `radacct` FOR EACH ROW if not isnull(new.acctstoptime) then
call AcctToAcct2(new.radacctid);
end if;

存储过程如下AcctToAcct2
CREATE PROCEDURE `AcctToAcct2`(id varchar(64))
BEGIN
INSERT INTO radacct2 (SELECT * FROM radacct WHERE radacct.radacctid = id);
delete FROM radacct WHERE radacct.radacctid = id;
END


出现递归触发了,MYSQL不支持。

热点排行