如何写触发器
分类:表级别,库级别,模式级别,视图
库级别的触发器
对数据库做drop 操作,记录操作时间和用户?
create table tab1(name varchar(20),time1 date);
create trigger sysdba.a
after drop on database
begin
insert into tab1 values(user,sysdate);
end;
select * from tab1;
表级别的触发器:
案例:员工表工资发生变动,记录变动前和变后的值
create table TAB2 ( old_value int,new_value int);
create trigger sysdba.D
before update of salary on sysdba.emp
for each row
begin
insert into TAB2 values(:old.salary,:new.salary);
end;
注意:TAB2 表名要大写,最好不要建在sysdba中。
使用sysdba用户创建dmhr.employee表的更新触发器
create table dmhr.TAB2( old_value int,new_value int);
create or replace trigger ljw
before update of salary on dmhr.employee
for each row
begin
insert into TAB2 values(:old.salary,:new.salary);
end;
update dmhr.employee set salary=1000 where rownum <5;
select * from dmhr.tab2;