怎么解决ORA-04091?

[复制链接]
查看11 | 回复1 | 2008-4-17 15:56:40 | 显示全部楼层 |阅读模式
表cal_user

user_id
NUMBER (10,0) NOT NULL,

time_zone VARCHAR2 (255) NOT NULL,

表cal_digest

owner_id
NUMBER (10,0) NOT NULL,

time_zone NUMBER(2,1) NOT NULL,
user_id 是primary key owner_id是foreign key,
要求插入cal_digest表时自动从cal_user表查询time_zone并插入。写TIGGER如下:
CREATE OR REPLACE TRIGGER CAL_DIGEST_trigger
AFTERINSERT ON CAL_DIGEST
FOREACH ROW
BEGIN
UPDATE CAL_DIGEST
SET CAL_DIGEST.time_zone = (SELECT time_zone
FROM cal_user
WHERE :new.owner_id =user_id );
END CAL_DIGEST_trigger;
编译通过,但是我向cal_digest表插入记录时报错
ORA-04091: table CALENDAR.CAL_DIGEST is mutating, trigger/function may not see it
ORA-06512: at "CALENDAR.CAL_DIGEST_TRIGGER", line 6
ORA-04088: error during execution of trigger 'CALENDAR.CAL_DIGEST_TRIGGER'
怎么解决?
回复

使用道具 举报

千问 | 2008-4-17 15:56:40 | 显示全部楼层
可以试试独立事务的触发器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行