急!!! 触发器,同时更新两个字段??? 200分!!(200分)

  • 主题发起人 主题发起人 Mao2002
  • 开始时间 开始时间
M

Mao2002

Unregistered / Unconfirmed
GUEST, unregistred user!
我在触发器中写了
:NEW.a:=12;
:New.b:=13;
测试执行时总是报错。 单用任一条均可,请问有什么办法可以作到同时更新两个字段!
(在线恭候!)
 
我在ORACLE的BEFORE触发器里经常用和你一样的方式更新多条纪录的,一切正常

你再检查下是不是其他地方错了
 
我用的是这样的方式:
CREATE TRIGGER myTg BEFORE INSERT OR UPDATE
ON MyTable
FOR EACH ROW
To 沙隆巴斯的主人:[blue]我的意思是每条记录同时更新它的两个字段a,b;[/blue]
[red]“单用任一条均可”啊?! [/red]
 
我写了段测试脚本,通过了的,你再看看问题出在哪,我相信是其他原因

create table test1
(c1 number(4),
c2 number(4),
c3 number(4)
);


CREATE or replace TRIGGER trg_bef_ins_test1 BEFORE INSERT
ON test1 FOR EACH ROW
begin
:new.c2 := :new.c1 +1;
:new.c3 := :new.c1 -1;
end;
/

insert into test1 (c1) values (5);

select * from test1;
 

:NEW.a:=12;
go
:New.b:=13;
go
 
问题是不是处出在你的 OR UPDATE上?
如果只写INSERT是不是就对了?
 
我后来把脚本改了,加上了OR UPDATE子句,依然一切OK
 
我的也很正常,同意沙隆巴斯的主人的意见。
 
試一下觸發器開始更新數據前加上
SET NOCOUNT ON
更新數據后加上
SET NOCOUNT OFF
 
报告什么错误呢?把错误代码写出来。
或者是编译错误的话,马上执行 show error ,把错误贴出来
 
错误代码如下:
ORA-04098: 触发器 'SPE_SCSB_ADMIN.TRG_BEF_INS_TEST1' 无效且未通过重新确认
 
[:D]OK了,不是这些问题,呵呵:)
增加、修改触发器后必须关闭数据库,再打开才行!!
谢谢各位。
 
你应该记得在修改了数据库后发COMMIT命令
 
后退
顶部