一 Oracle触发器语法
触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。
功能:
1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑
触发器触发时间有两种:after和before。
1、触发器的语法:
CREATE [OR REPLACE] TIGGER触发器名 触发时间 触发事件
ON表名
[FOR EACH ROW]
BEGIN
pl/sql语句
END
其中:
触发器名:触发器对象的名称。
由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。
触发时间:指明触发器何时执行,该值可取:
before---表示在数据库动作之前触发器执行;
after---表示在数据库动作之后出发器执行。
触发事件:指明哪些数据库动作会触发此触发器:
insert:数据库插入会触发此触发器;
Oracle触发器语法(二)Oracle触发器详解
update:数据库修改会触发此触发器;
delete:数据库删除会触发此触发器。
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
2、举例:
下面的触发器在更新表auths之前触发,目的是不允许在周末修改表:
create triggerauth_secure before insert or update or delete //对整表更新前触发
on auths
begin
if(to_char(sysdate,'DY')='SUN'
RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表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_COMPLAINT_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<>80 )
begin
:new_value.commission_pct :=0;
end;
/
|
1、触发器的组成部分:
1、 触发器名称
2、 触发语句
3、 触发器限制
4、 触发操作
1.1、触发器名称
create trigger biufer_employees_department_id |
命名习惯:
biufer(before insert update for each row) |
employees表名
department_id列名
1.2、触发语句
比如:
表或视图上的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
|
说明:
1、 无论是否规定了department_id,对employees表进行insert的时候
2、 对employees表的department_id列进行update的时候
1.3、触发器限制
when (new_value.department_id<>80 ) |
限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。
其中的new_value是代表更新之后的值。
1.4、触发操作
是触发器的主体
begin
:new_value.commission_pct :=0;
end;
|
主体很简单,就是将更新后的commission_pct列置为0
触发:
insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,
department_id,salary,commission_pct )
values( 12345,’Chen’,’Donny’, sysdate, 12, ‘donny@hotmail.com’,60,10000,.25);
select commission_pct from employees where employee_id=12345;
|
触发器不会通知用户,便改变了用户的输入值。Oracle触发器语法(四)
数据库关闭或启动,startup shutdown等等
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
|
说明:
1、 无论是否规定了department_id,对employees表进行insert的时候
2、 对employees表的department_id列进行update的时候
1.3、触发器限制
when (new_value.department_id<>80 ) |
限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。
其中的new_value是代表更新之后的值。
1.4、触发操作
是触发器的主体
begin
:new_value.commission_pct :=0;
end;
|
主体很简单,就是将更新后的commission_pct列置为0
触发:
insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,
department_id,salary,commission_pct )
values( 12345,’Chen’,’Donny’, sysdate, 12, ‘donny@hotmail.com’,60,10000,.25);
select commission_pct from employees where employee_id=12345;
|
触发器不会通知用户,便改变了用户的输入值。
分享到:
相关推荐
通过理解和掌握Oracle触发器的语法及实例,开发者能够更好地控制和维护数据库中的数据,实现更复杂、灵活的业务逻辑。在实际开发中,根据需求合理使用触发器,可以提高数据库的稳定性和安全性。
通过阅读`ORACLE 触发器语法及实例.txt`和`Oracle触发器语法(一) .txt`文件,你可以更深入地了解Oracle触发器的各种细节和更多实用示例。这些文档可能会涵盖如复合触发器、行级和语句级触发器的差异、如何禁用和启用...
5. 触发器语法: - `CREATE TRIGGER trigger_name [BEFORE | AFTER] {INSERT | UPDATE [OF column_list] | DELETE} ON table_name [FOR EACH ROW]` - `trigger_name`:触发器的名称。 - `BEFORE`或`AFTER`:...
### Oracle触发器详解 在Oracle数据库管理中,触发器是一种非常强大的工具,它允许你在特定的数据库事件(如数据插入、更新或删除)发生时自动执行预定义的SQL语句或PL/SQL代码块。这使得数据库能够在无需外部程序...
二、触发器语法 创建触发器的基本语法如下: ```sql CREATE [OR REPLACE] TRIGGER 触发器名 {BEFORE | AFTER} {INSERT | UPDATE [OF column_list] | DELETE} ON 表名 [FOR EACH ROW] BEGIN PL/SQL语句; END; ``...
5. **Oracle触发器语法及实例**:触发器是一种数据库对象,当满足特定事件(如INSERT、UPDATE或DELETE)时自动执行。它们可以用来实现复杂的业务规则,但过度使用也可能导致性能问题。理解触发器的工作原理、编写...
### Oracle中记录用户登录信息的触发器实例解析 #### 一、背景介绍 在Oracle数据库管理中,确保数据安全是一项至关重要的任务。其中,记录用户的登录信息(如登录时间、用户名和客户端IP地址等)可以帮助管理员更...
Oracle触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)或者系统事件(如数据库启动和关闭)发生时,自动执行预定义的存储过程或逻辑。触发器作为独立的对象存在于...
Oracle触发器是一种数据库对象,它在数据库管理系统中自动执行,在满足特定条件时被调用,无需用户直接操作。触发器能够响应数据表的DML操作(INSERT、UPDATE、DELETE)以及DDL操作(如CREATE、ALTER、DROP)等事件...
Oracle 数据库语法包括了查询语法、函数、视图、存储过程、触发器等多种元素,以下是 Oracle 数据库语法的详细知识点。 Oracle 简介 Oracle 是一种关系数据库管理系统(RDBMS),它由 Oracle Corporation 开发,...
Oracle数据库系统是全球广泛使用的大型关系数据库管理系统,它在企业级数据存储、管理和处理方面具有卓越性能。Oracle的客户端/服务器架构...《Oracle语法实例讲解》这样的资源可以帮助你进一步提升Oracle技能。
在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入理解PL/SQL的各种概念和实践技巧。 本书详细讲解了Oracle 11g版本中的PL/SQL语言,这涵盖了从基础语法到高级特性的广泛范围。PL/SQL是...
【Oracle触发器在科技行政纪监系统中的应用与实现】 Oracle触发器是关系型数据库管理系统Oracle中的一个重要特性,主要用于响应数据库中的特定事件,如插入、更新或删除数据。当这些事件发生时,触发器会自动执行...
本文将深入探讨Oracle触发器的创建、类型、工作原理及其应用实例。 #### 触发器的类型与作用 在Oracle中,触发器主要分为两大类:语句级触发器和行级触发器。语句级触发器作用于整个表上的操作,而行级触发器则...
例如,Oracle 和 SQL Server 的触发器创建语法就有一定的区别。 **3. 触发器的用途** - **数据一致性**:确保数据符合特定的规则和约束。 - **审计跟踪**:记录数据更改的历史。 - **级联更新/删除**:在更新或删除...
读者可以通过操作这些预先设定的模式,学习如何在Oracle数据库中创建和管理对象,了解数据类型、约束、触发器(TRIGGER)以及数据库对象权限的管理。 最后,ChapterExampleScripts.zip可能包含的是各章的示例脚本,...
Oracle SQL语法速查指南 Oracle数据库系统是世界上最广泛使用的数据库管理...在实际工作中,应结合具体场景灵活运用,不断探索Oracle的高级特性,如索引、触发器、存储过程等,以提高数据库性能和应用程序的可靠性。
在Oracle数据库管理中,对象创建是数据库管理员和开发人员日常工作中不可或缺的一部分。...在探索"oracle学习"这个压缩包文件的内容时,你可以找到更多关于这些主题的实例和练习,以深化你的理解和实践能力。
本"Oracle语法指南"提供了全面的Oracle SQL语法参考和实例解析,旨在帮助用户更好地理解和掌握Oracle数据库的操作。 首先,"oracle语法.txt"可能包含了Oracle SQL的基础到高级语法,例如: 1. **数据类型**:...