(11)oracle触发器

触发器是特殊的存储过程。

每当一个特定的数据操作语句(inster,update,delete)在指定的表上触发时,Oracle自动的地执行触发器中定义的语句序列。

create trigger 触发器名
(brfore、after) insert(update、delete)
on 表名
declare
begin
.
.
.
end;
/

更新指定列触发

create trigger 触发器名
(brfore、after) update 列明
on 表名
for each row  [where条件 ]--按行触发
declare
begin
.
.
.
end;
/

 

语句级触发器:在之指定的语句操作前或后执行一次,不管语句影响多少行

行级触发器:出发语句作用的每条记录都被触发。在行级触发器中使用:old和:new伪记录变量,识别值得状态。

 

例子

1.复杂得安全性检查

禁止非工作时间插入数据到员工表

2.数据确认

create or replace trigger a
before update
on emp
for each row
begin
if :old.sal>:new.sal
raise_applcation_error(-20002,'涨后的薪水不能小于涨前的薪水')
end if;
end;
/

 

3.数据库审计

 

4.数据库的同步和备份

 

创建自增序列和触发器

DROP SEQUENCE SEQ_TITLE;
DROP TRIGGER TR_TITLE;

-- 
-- SEQUENCE: SEQ_TITLE 
--

CREATE SEQUENCE SEQ_TITLE
    START WITH 1
    INCREMENT BY 1
    NOMINVALUE
    NOMAXVALUE
   CACHE 20
   NOORDER;

-- 
-- TRIGGER: TR_TITLE 
--

create or  replace trigger TR_TITLE

before insert on T_TITLE

for each row

begin

select SEQ_TITLE.nextval into :new.TITLE_ID from dual;

end;
/

 

posted @ 2016-10-19 13:10  富坚老贼  阅读(210)  评论(0编辑  收藏  举报