知识大全 Oracle触发器语法及实例
Posted 数据库
篇首语:互补的人容易一见钟情,相似的人适合一起变老。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle触发器语法及实例相关的知识,希望对你有一定的参考价值。
Oracle触发器语法及实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 Oracle触发器语法
触发器是特定事件出现的时候 自动执行的代码块 类似于存储过程 触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的 而触发器是不能被直接调用的
功能
允许/限制对表的修改
自动生成派生列 比如自增字段
强制数据一致性
提供审计和日志记录
防止无效的事务处理
启用复杂的业务逻辑
触发器触发时间有两种 after和before
触发器的语法
CREATE [OR REPLACE] TIGGER触发器名 触发时间 触发事件
ON表名
[FOR EACH ROW]
BEGIN
pl/sql语句
END
其中
触发器名 触发器对象的名称
由于触发器是数据库自动执行的 因此该名称只是一个名称 没有实质的用途
触发时间 指明触发器何时执行 该值可取
before—表示在数据库动作之前触发器执行;
after—表示在数据库动作之后出发器执行
触发事件 指明哪些数据库动作会触发此触发器
insert 数据库插入会触发此触发器;
Oracle触发器语法(二)Oracle触发器详解
update 数据库修改会触发此触发器;
delete 数据库删除会触发此触发器
表 名 数据库触发器所在的表
for each row 对表的每一行触发器执行一次 如果没有这一选项 则只对整个表执行一次
举例
下面的触发器在更新表auths之前触发 目的是不允许在周末修改表
create triggerauth_secure before insert or update or delete //对整表更新前触发
on auths
begin
if(to_char(sysdate DY )= SUN
RAISE_APPLICATION_ERROR( 不能在周末修改表auths );
end if;
end
例子
CREATE OR REPLACE TRIGGER CRM T_SUB_USERINFO_AUR_NAME AFTER UPDATE OF STAFF_NAME
ON CRM T_SUB_USERINFO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
declare
begin
if :NEW STAFF_NAME!=:OLD STAFF_NAME then
begin
客户投诉
update T_PLAINT_MANAGE set SERVE_NAME=:NEW STAFF_NAME where SERVE_SEED=:OLD SEED;
客户关怀
update T_CUSTOMER_CARE set EXECUTOR_NAME=:NEW STAFF_NAME where EXECUTOR_SEED=:OLD SEED;
客户服务
update T_CUSTOMER_SERVICE set EXECUTOR_NAME=:NEW STAFF_NAME
where EXECUTOR_SEED=:OLD SEED;
end;
end if;
end T_sub_userinfo_aur_name;
/
二
开始
create triggerbiufer_employees_department_id
beforeinsertorupdateofdepartment_idonemployees
referencingoldasold_value newasnew_value
for each row
when (new_value department_id<> )
begin
:mission_pct := ;
end;
/
触发器的组成部分
触发器名称
触发语句
触发器限制
触发操作
触发器名称
create trigger biufer_employees_department_id
命名习惯
biufer(before insert update for each row)
employees表名
department_id列名
触发语句
比如
表或视图上的DML语句
DDL语句
Oracle触发器语法(四)
数据库关闭或启动 startup shutdown等等
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
说明
无论是否规定了department_id 对employees表进行insert的时候
对employees表的department_id列进行update的时候
触发器限制
when (new_value department_id<> )
限制不是必须的 此例表示如果列department_id不等于 的时候 触发器就会执行
其中的new_value是代表更新之后的值
触发操作
是触发器的主体
begin
:mission_pct := ;
end;
主体很简单 就是将更新后的mission_pct列置为
触发
insert into employees(employee_id last_name first_name hire_date job_id email
department_id salary mission_pct )
values( Chen Donny sysdate );
select mission_pct from employees where employee_id= ;
触发器不会通知用户 便改变了用户的输入值 Oracle触发器语法(四)
数据库关闭或启动 startup shutdown等等
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
说明
无论是否规定了department_id 对employees表进行insert的时候
对employees表的department_id列进行update的时候
触发器限制
when (new_value department_id<> )
限制不是必须的 此例表示如果列department_id不等于 的时候 触发器就会执行
其中的new_value是代表更新之后的值
触发操作
是触发器的主体
begin
:mission_pct := ;
end;
主体很简单 就是将更新后的mission_pct列置为
触发
insert into employees(employee_id last_name first_name hire_date job_id email
department_id salary mission_pct )
values( Chen Donny sysdate );
select mission_pct from employees where employee_id= ;
cha138/Article/program/Oracle/201311/17146相关参考
前言 当然在触发器修改自身数据表对于有ORACLE数据库后台编程人员来说并不应该算是一个难题可能在平时的工作中就经常要遇到 但对于刚刚使用ORACLE数据库后台编程人员来说的确是一个比较烦人的
***正则表达式语法(字符匹配语法重复匹配语法字符定位语法转义匹配语法)******** (字符 \\ 将下一个字符标记为
JSP语法大全及实例解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! HTML注释在客户端显示
基本结构 CREATEORREPLACEPROCEDURE存储过程名字 ( 参数INNUMBER 参数INNUMBER )IS 变量INTEGER:=; 变量DATE; BEGIN
SQL触发器实例讲解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Arti
sqlupdate语法与实例 在日常使用的数据库教程是一个不断变化的数据存储在SQL是用于修改数据已经在数据库中的更新和删除mandsThe更新语句可以更新表格中的一个或多个记录命令 UPDA
实例讲解Oracle监听口令及监听器安全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多人都
Oracle触发器详细介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 触发器 是特定事件出
aspForNext循环语句语法与实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ForNe
oracle---Trigger触发器的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 记录