首页 > 其他 > 详细

触发器

时间:2020-03-30 22:39:54      阅读:77      评论:0      收藏:0      [点我收藏+]

触发器语法:

CREATE OR REPLACE TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}  --可跟update具体列
ON [schema.]table_name | [schema.]view_name   --表名或视图名
[FOR EACH ROW ] WHEN 条件  -- 有for each row 为行级触发器,没有则为语句触发器。when 后可跟条件,比如只针对某个部门号的员工做更新。

1. 触发器的类型

①语句级触发器

-- 在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。

②行级触发器(有语句:for each row)

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

两种类型举例,例如:

insert into emp2 select * from emp where dempno=10;

比如这条插入语句dempno=10有3条数据,即一次会插入3条语句。

对于语句级触发器只会调用一次。针对表,只对表有影响。

对于行级触发器则会调用3次。针对行,影响多少行调用几次。

2. 触发器的使用场景

①实施复杂的安全性检查。例如:禁止在非工作时间插入数据。周末或上班前下班后

create or replace trigger intoemp
before insert
on emp    --无for each row,说明创建的是语句级触发器。
declare
begin
if to_char(sysdate,‘day‘) in(‘星期六‘,‘星期日‘) or
to_number(to_char(sysdate,‘hh24‘)) not between 9 and 18
then
RAISE_APPLICATION_ERROR(-20000, ‘非工作日禁止插入数据‘);
end if;
end;

触发器

原文:https://www.cnblogs.com/henn/p/12601730.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!