我得触发器如下:
create or replace trigger test_xue1
after insert or update or delete on count2
for each row
declare
old_values    varchar2(400);
strsql       varchar2(400);
begin
old_values :='num';
 if updating('num')then
    strsql:='update count2_log set tablename = :old.'||old_values||' where keyid_no=6';
  dbms_output.put_line(strsql);
  execute   immediate strsql;
 end if;
end;
此段代码编译得时候是正确得,但是当我做update操作:update count2 set num=8 where keyid=6;
 报错ORA-00600: internal error code, arguments: [15212], [1], [], [], [], [], [], []
ORA-06512: at "TEST.TEST_XUE1", line 10
ORA-04088: error during execution of trigger 'TEST.TEST_XUE1' 

解决方案 »

  1.   

    因为表属性太多了 成百条记录又不确定修改得是哪条 所以通过方法将改变了得那个属性名写入了一个变量 但是:old.+变量名 无法获得该属性得原始值 只有动态写个SQL了
      

  2.   

    没怎么看懂你在存储过程里想实现什么不过按你的写法,strsql里面的:old是个绑定变量,执行的时候要有using 变量值把你需求再描述清楚一点
      

  3.   

    strsql:='update count2_log set tablename = ' ¦ ¦:old.old_values ¦ ¦' where keyid_no=6'; 
    感觉上是这个意思