Plsql 更新内部pl/sql触发器
我有一张桌子Plsql 更新内部pl/sql触发器,plsql,triggers,Plsql,Triggers,我有一张桌子 messages ( id number, mess varchar2(4000), short_mess(100) ) 我想创建这样的触发器: INSERT into messages ( id, message ) values ( some_id, some_message) 然后在表messages中,我想要(一些\u id,一些\u message,一些\u message\u快捷方式) 我的触发器如下所示: create or replace
messages (
id number,
mess varchar2(4000),
short_mess(100) )
我想创建这样的触发器:
INSERT into messages ( id, message ) values ( some_id, some_message)
然后在表messages
中,我想要(一些\u id,一些\u message,一些\u message\u快捷方式)
我的触发器如下所示:
create or replace trigger "MESSAGES_T1"
AFTER
insert on "MESSAGES"
for each row
begin
UPDATE MESSAGES set "short_mess" = 'aaa'
where id = :new.id;
end;
但当我尝试插入新行时,我得到了错误
ORA-04091: table FIRSTAPP.MESSAGES is mutating, trigger/function may not see it ORA-06512: at "FIRSTAPP.MESSAGES", line 2 ORA-04088: error during execution of trigger 'FIRSTAPP.MESSAGES'
我该怎么做?('aaa'
仅用于测试目的)
提前感谢。不要更新,只需分配新值即可。但是您需要一个
前
触发器才能工作,您不能在后
触发器中修改新行:
create or replace trigger "MESSAGES_T1"
BEFORE insert on "MESSAGES"
for each row
begin
:new.short_mess := 'aaa';
end;
/