请问:
如何写一个触发器:当数据库中新增一条数据的时候,将这条数据的一个字段值赋值给另一个字段值。我知道要有一个update语句,但是不知道怎么写如何判断是否新增了数据谢谢!~~oracle 触发器

解决方案 »

  1.   

    create or replace trigger test_trigger
    before insert or update on TABLE_A
    for each row
    begin
    select SEQ_TEST_VERSION.nextval into :new.version_num from dual;
    end ;
      

  2.   

    刚写了一个简单的触发器 lz参考一下吧  可以设置更新后出发
    --建立测试表
    create table tb1(c1 int,c2 nvarchar2(20));--插入测试数据
    insert into tb1 values (1,'aa');
    insert into tb1 values (2,'bb');
    insert into tb1 values (3,'cc');
    commit;--创建历史表
    CREATE TABLE tb1_his AS SELECT * FROM tb1 WHERE 1=2; 
    --创建触发器
    CREATE OR REPLACE TRIGGER tr_del_tb1 
       BEFORE DELETE OR UPDATE --指定触发时机为删除操作前触发
       ON tb1
       FOR EACH ROW   --说明创建的是行级触发器 
    BEGIN
       --如果是删除数据 将删除的数据插入到历史表    
       IF DELETING then
       INSERT INTO tb1_his(c1,c2) VALUES( :old.c1,:old.c2);
       ELSIF UPDATING IF
       --执行更新操作
       END IF
    END;DELETE tb1 WHERE c1=2;
    commit;
     
    --查询执行后的数据
    select * from tb1;
    select * from tb1_his ; --删除测试表
    DROP TABLE TB1;
    DROP TABLE TB1_HIS;
      

  3.   

    失误失误... 后来加的东西没测试报错了 最开始建的触发器 CREATE OR REPLACE TRIGGER tr_del_tb1 
       BEFORE DELETE 
       ON tb1
       FOR EACH ROW  
    BEGIN   
       INSERT INTO tb1_his(c1,c2) VALUES( :old.c1,:old.c2);
    END;
      

  4.   


    谢谢~~我自己解决了create or replace trigger tr_userinfo
      before insert on m_userinfo  
      for each row
    declare
      -- local variables here
    begin
      :new.STAFFID:=:new.LOGINID;
    end tr_userinfo;