create or replace trigger biufer_emp_empno --触发器名称
before insert or update --触发语句
of empno
on emp --on 目标表
referencing old as old_value
new as new_value
for each row
when(new value.empno<>7782) --触发器限制
begin
:new_value.comm:=0; --触发操作
end;
/
触发器名称中应该包含触发器执行时间、执行的操作、涉及的表或列
如:
biufer --> before insert or update for each row
CREATE TABLE FOO(a number);
create or replace trigger biud_foo_a
before insert or update or delete
on foo
begin
if user not in ('jack','Clinton') then
raise_application_error(-20001,'你没有修改此表的权限')
end if;
end;
/
如果用户不是...没有权限修改
在emp_copy表上创建一个触发器,当对emp_copy表执行插入、删除或更新操作是,该触发器将会填充emp_copy_log
create or replace trigger biufer_emp_copy
before insert or update or delete
on emp_copy
begin
insert into emp_copy_log values(user,sysdate);
end;
/
然后测试该触发器。修改emp_copy
create table emp_copy_log(
who varchar2(30),
when date)
/
create or replace trigger update_emp_job_view
instead of update
on emp_job
begin
update emp
set empno = :new.empno,
ename = :new.ename,
job = :new.job
where empno = :old.empno
在触发器的主体有一个对表emp的update关键字。由于emp_job视图是建立在emp表上的视图,如果更新这个视图,实际上就是更新该图的基本表