求教数据库触发器
我在的目的是在更新完表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不支持。