当test_currval 表中有数据插入进来的时候,需要在另一个表key_tmp中插入相应的数据,trigger如下,但好像一直不起作用,
但手工插入test_currval 没有问题,非手工的时候,key_tmp表中总是没有数据,请教高手怎么回事??谢谢!!create or replace trigger test
  AFTER INSERT ON test_currval 
  for each row
declare
  /*
 
  */
begin
  IF INSERTING THEN
    if :NEW.a_id = 'fixed_number' 
     then
    
      insert into key_tmp
      values
        (:new.row_id,
         :new.a_id,
         :new.b_id,
         1,
         :new.begintime);
      
    end if;
  END IF;
end test;

解决方案 »

  1.   

     if :NEW.a_id =  'fixed_number' then 
    -----这个条件是否符合??
    改为  if Lower(:NEW.a_id) =  'fixed_number' then  试试
      

  2.   

    谢谢楼上,但不是这个地方的问题test_currval 表的数据比较大,但符合:NEW.a_id = 'fixed_number' 这个条件的不算很多
      

  3.   

    create or replace trigger test 
      AFTER INSERT ON test_currval  
      for each row 
    declare 
      /* 
      
      */ 
    begin 
      IF INSERTING THEN 
        if :NEW.a_id =  'fixed_number' --先保证通过此条件 
         then 
         
          insert into key_tmp 
          values 
            (:new.row_id, 
             :new.a_id, 
             :new.b_id, 
             1, 
             :new.begintime); 
          Commit; -- 马上提交 
        end if; 
      END IF; 
    end test;
      

  4.   

    楼上的 ora触发器里面能用   "Commit; -- 马上提交"???
    自己没有用过吧??
      

  5.   

    错了,不能在trigger用commit,
    看一下是不是其他约束的问题?
      

  6.   

    手工的话,我写一个sql:insert into test_currval ......
    非手工是因为,test_currval 表是一个业务当前表,几乎每分钟都有数据过来,当下一次新的数据过来后,原来的数据会插入到一个历史表中,
    现在就是想每次有符合的数据过来一次,就在key_tmp  表中插入特定值