您的位置:首页 > 数据库

数据库触发器的运用

2016-09-03 20:08 239 查看
触发器分为行级触发和语句触发。行级触发每影响一行执行一行。语句触发执行玩语句后触发一次,不管这条语句会影响多少行,都只触发一次。默认是语句触发。其语法规则为:

create [or replace] trigger <tri_name>
after|before|instand of
[insert or update [of column_name] or delete]
on <table_name>
[referrncing OLD as old / New as new]
[for each row]
[when (condition)]
pl/sql block


触发器中使用PL/SQL语句可以轻松可靠地实现许多复杂的功能,我在这里使用的主要是DML触发器。

下面是几个简单的小案例:

对于主键编号的修改(自动增长列:T0001-T???)

create or replace trigger tri_ts1_tid
before insert on ts1
for each row
begin
select 'T'||substr(seq_ts1_tid.nextval,2) into :new.tid from dual;
end;


对于主外键的修改

create or replace trigger tri_update
before update on dept
for each row
begin
update emp set deptno=:new.deptno where deptno=:old.deptno;
commit;
end;


进行安全校验

create or replace trigger tri_emp_check
before update on emp
for each row
when(new.sal<3000)
begin
:new.sal := 3000;  --PL/SQL 两种给变量赋值的方式 select .. into ..     :=
raise_application_error(-20001,'修改后的工资不能低于3000');  --错误提示,可以按照自己的需求,不使用就不会报错,数据更改;使用数据不变。
end;


小结:or replace 可以在触发器需要更改时节省很多功夫。触发器的使用需要一定的PL/SQL基础
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库