日期:2014-05-17  浏览次数:20846 次

一个简单的oracle触发器
我有一张表table1
id name pwd sum
001 ss 123 100
002 ww 11 200
002 qq 22 100

table2
id name cc
001 ss 00

想建一个触发器,当我table1中的数据有变化,新增记录或者update任何字段的时候,就向表table2中插入
一条记录,id和name就是table1中被操作的数据,cc是我插入的一个固定值。
只要实现这个功能就行了,谢谢!

------解决方案--------------------
SQL code
create or replace trigger tr_after_update_t1 
after update on t1
for each row
begin
   insert into t2(id, name, cc) values(:new.id, :new.name, '00'); --:old.id, :old.name
end;

------解决方案--------------------
楼上是写的更新时,我就写个插入时:
create or replace trigger tr_after_insert_t1 
after insert on t1
for each row
begin
insert into t2(id, name, cc) values(:new.id, :new.name, '00'); --:old.id, :old.name
end;
:new代表新插入的表的数据,:old表时修改前的表的数据
------解决方案--------------------
create or replace trigger tr_after_update_t1 
after insert or update on table1
for each row
begin
insert into table2(id, name, cc) values(:new.id, :new.name, '00'); 
end;
------解决方案--------------------
SQL code

create or replace trigger tr_after_update_t1 
after update,delete,insert on t1
for each row
begin
       if inserting then
          insert into table2(id, name, cc) values(:new.id, :new.name, '00'); 
       elsif updating then
          update table2 set name=:new.name,cc=:new.cc where id=:old.id;
       elsif deleting then
          delete from table2 where id=:old.id;
       end if;
      EXCEPTION
       WHEN others THEN
        null;
end;

------解决方案--------------------
探讨
create or replace trigger tr_after_update_t1
after insert or update on table1
for each row
begin
insert into table2(id, name, cc) values(:new.id, :new.name, '00');
end;

------解决方案--------------------
支持樓上的
------解决方案--------------------
探讨
create or replace trigger tr_after_update_t1
after insert or update on table1
for each row
begin
insert into table2(id, name, cc) values(:new.id, :new.name, '00');
end;