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;
/