create table test
(
id number,
status varchar2(10)
)
/
--测试表实现功能:当发生test 被update的时候,并且status='UNC'的时候,把status='MOD'
考虑到用触发器:CREATE OR REPLACE TRIGGER TRI_on_test
AFTER update
ON test
REFERENCING OLD AS O NEW AS N
FOR EACH ROW
BEGIN
IF update(test.status)&& :N.status='UNC' THEN
update test t set status='MOD' where t.rowid=:N.rowid and t.status='MOD';
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(SQLCODE,SQLERRM);
END;
但是这样有个问题,没办法在更新表的同时,再更新自己,请问有没有办法实现这样的功能?
for each rowIF :new.status='UNC' and (:old.status is null or :old.status<>'UNC')
THEN
:new.status := 'MOD';
END IF;
理论上应该可以,刚才没有看到你改了before,呵呵,我试下,谢谢兄弟。