trigger問題

tdjdhdstx 2004-09-22 08:50:30
我建立trigger如下:
CREATE OR REPLACE TRIGGER ECS_SFIS_OQC_SNINFO_ID
AFTER INSERT
ON ECS_SFIS_OQC_SNINFO
REFERENCING
NEW AS NEW
OLD AS OLD
FOR EACH ROW
DECLARE
oqcno VARCHAR2(16);
sncount NUMBER;
BEGIN
oqcno:=:new.STROQCNO;
select count(strsn) into sncount from ecs_sfis_oqc_sninfo where strsn=:new.strsn;
if sncount=1 then
update ecs_sfis_oqc_qcnoinfo set numchecked=sncount where stroqcno=oqcno;
end if;
end;
也就是插入數據時檢查數據是不是重複,不重複更新另一個表的對應計數.但總是提示table is mutating.trigger/function may not see it.是不是不能對本表進行操作,該怎麼做可實現?
...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzszp 2004-09-22
  • 打赏
  • 举报
回复
after ...
for each row
oracle不允许对于行级触发器 在插入每一行后对表进行操作。
tdjdhdstx 2004-09-22
  • 打赏
  • 举报
回复
多謝了,可是怎麼不能after呢
dinya2003 2004-09-22
  • 打赏
  • 举报
回复
这是因为使用了行级触发FOR EACH ROW导致产生了变异表的缘故.要改用两个触发器.将修改后的值存到一个变量中去,使用一个表级触发.
bzszp 2004-09-22
  • 打赏
  • 举报
回复
AFTER INSERT
改为
before insert即可。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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