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

求教数据库触发器

我在的目的是在更新完表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不支持。

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

相关文章:

你感兴趣的文章:

标签云: