【问题标题】:insert trigger after update on one table在一张表上更新后插入触发器
【发布时间】:2017-12-18 01:58:25
【问题描述】:
create or replace trigger tgr_insertinworkdone
after update on workassgined
referencing new as new old as old
for each row
declare 
    workdonetemp number(15);
begin
    select max(workdoneid) into workdonetemp from workdone;
if :new.complete_status = 'T' 
then 
    insert into workdone(workdoneid,workid,workdatedate,type,status)
    values(workdonetemp+1,old.docid,old.taskdate,'C','Completed');
end if;
end;

出现错误 OR:00984 列在此处不允许。 在这里,我尝试根据 workassgined 表中的完整标志 Ture 在 workdone 表中插入一行,一旦此标志变为“T”,则应将一行插入 workdonw 表中。有什么帮助吗?

【问题讨论】:

  • 语法是在oldnew 命名空间前加上冒号。所以:old.docid 不是old.docid

标签: oracle triggers


【解决方案1】:

猜你错过了旧的冒号(:) 应该是

插入workdone(workdoneid,workid,workdatedate,type,status) values(workdonetemp+1,:old.docid,:old.taskdate,'C','Completed');

【讨论】:

  • 非常感谢先生!,它现在工作。我的错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 2021-03-08
  • 2013-11-22
  • 1970-01-01
相关资源
最近更新 更多