oracle触发器的问题
我有一个存储过程功能是传入一个编号修改此表(TAB1)中的状态.
TAB1有一个触发器,在执行INSERT时触发器调用这个存储过程同时传入NEW.ID
TAB1
ID,STATE
1,2
2,3
-------------触发器------------------------------------
create or replace trigger TEST_TAB1
after INSERT ON TAB1
FOR EACH ROW
declare
PRAGMA AUTONOMOUS_TRANSACTION;
begin
begin
prc_TEST(:NEW.ID);
commit;
end;
end TAB1;
--------------------------存储过程--------------------------
CREATE OR REPLACE PROCEDURE prc_TEST(ls_id IN VARCHAR2) is
begin
update TAB1 set state=9 where id=ls_id;
end prc_TEST;
但执行了STATE的值没改变是怎么会事呀
我想实现插入时修改其实状态值要用这种方法实现行吗?
------解决方案--------------------create or replace trigger trig_test
after insert on tab1
for each row
begin
-- prc_test(:new.id);
update tab1 set state = 9 where id = :new.id;
commit;
end;
要将更新语句放在触发器里执行;
在触发器被触发时,该条记录还是被锁定或者对其他事务不可见的。