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

oracle触发器修该某条记录某个字段值时分自动修改该记录指向的另一条记录的同一个字段值

2014-01-22 
oracle触发器修该某条记录某个字段值时候自动修改该记录指向的另一条记录的同一个字段值表结构如下:CREATE

oracle触发器修该某条记录某个字段值时候自动修改该记录指向的另一条记录的同一个字段值
表结构如下:

CREATE TABLE "NAME"."NewTable" (
"REGION_ID" VARCHAR2(100 BYTE) NULL ,
"X" NUMBER(10) NULL ,
"FID" VARCHAR2(100 BYTE) NULL 
)

我现在的需求是:

  修改某条记录X的值,然后自动修改其他记录中REGION_ID值等于该记录FID值的X值.

我是这样写的:

DECLARE
XX NUMBER;
CHA NUMBER;
BEGIN
 CHA := :new.X-:old.X;
 SELECT d.X INTO XX FROM NewTable d WHERE d.REGION_ID = :old.FID;
 UPDATE NewTable c SET c.X=XX+CHA
 WHERE c.REGION_ID = :old.FID;
END;

结果报错.

为什么?
[解决办法]
估计楼主碰到ORA-04091错误了。在一个触发器中修改基表的记录是危险的。
建议楼主不要把这段逻辑放在触发器里,放到外围的SQL里实现。

[解决办法]
在逻辑外执行update操作吧,Oracle不允许在触发器中对本表进行更新操作

热点排行