触发器的语法
CREATE OR REPLACE TRIGGER 触发器名
{ BEFORE | AFTER }
{ INSERT OR UPDATE OR DELETE }
ON 表1
[ FOR EACH ROW ]
{ AS | IS }
/* 声明部分 */
BEGIN
/* 可执行部分 */
EXCEPTION
/* 异常处理部分 */
END [触发器名];
表1被更新时执行BEGIN部分的处理。
●启动时刻
BEFORE : 表1被更新前启动触发器。
AFTER : 表1被更新后启动触发器。
●触发器事件语句
INSERT : 对表 1 执行INSERT处理时启动触发器。
UPDATE : 对表 1 执行UPDATE处理时启动触发器。
DELETE : 对表 1 执行DELETE处理时启动触发器。
●行触发器/语句触发器
附加「 FOR EACH ROW 」关键字,就是行触发器。无此关键字,则是语句触发器。
行触发器 : 针对更新对象的每1行启动触发器。比如更新3行的话,
就会3次启动触发器。
文触发器 : 如果对象表被更新,就启动触发器(仅1次)。
示例1)表[emp]的触发器[sample_tri]的执行条件如下:
启动时刻:更新DB前启动触发器
触发器事件:INSERT 或者 UPDATE 或者 DELETE
create or replace trigger sample_tri
before delete or insert or update
on emp
begin
dbms_output.put_line('更新!!');
end sample_tri;
语句触发器
示例2)表[emp]的触发器[sample_tri]的执行条件如下:
启动时刻:更新DB后启动触发器
触发器事件:UPDATE
行触发器
create or replace trigger sample_tri
before update
on emp
for each row
begin
dbms_output.put_line('-------------------------');
-- 输出更新对象记录的主键[EMP_ID]的值
dbms_output.put_line('EMP_ID:' || :old.emp_id);
-- 输出更新前的项目[salary]的值
dbms_output.put_line('变更前数据:' || to_char(:old.salary));
-- 输出更新后的项目[salary]的值
dbms_output.put_line('变更后数据:' || to_char(:new.salary));
end sample_tri;
更新前的表[emp]的数据:
SQL> select * from emp;
EMP DEP NAME SALARY
--- --- ---------- -------
E01 D01 名字1 100
E03 D02 名字3 300
E04 D05 名字4 200
更新表[emp]时,启动示例2中的触发器:
SQL> update emp set salary = 500 where salary >= 200;
-------------------------
EMP_ID:E03
变更前数据:300
变更后数据:500
-------------------------
EMP_ID:E04
变更前数据:200
变更后数据:500
2行被更新了。
SQL>
SQL> select * from emp;
EMP DEP NAME SALARY
--- --- ---------- ----------
E01 D01 名字1 100
E03 D02 名字3 500
E04 D05 名字4 500
→
匿名块
→
存储过程(PROCEDURE)
→
存储函数(FUNCTION)
→
存储包(PACKAGE)
→
触发器(TRIGGER)
→
PL/SQL的数据类型
→
PL/SQL的运算符(计算、赋值、结合、连结、指数、比较)
→
PL/SQL的变量和常量
→
%TYPE属性和%ROWTYPE属性
→
PL/SQL的内置函数
→
PL/SQL的执行权限(AUTHID)
→
以独立事务执行PL/SQL
→PL/SQL
→首页
分享到:
相关推荐
--行级触发器 create or replace trigger insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace trigger update_...
主要为大家详细介绍了Oracle触发器trigger,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
sqlserver的触发器。简单介绍了对表的增删改查触发效果有具体实例。便于理解
SQL语句,存储过程,触发器
触发器本身:即该TRIGGER 被触发之后的目的和意图,正是触发器本身要做的事情。 例如:PL/SQL 块。 触发频率:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发器和行级(ROW)触发器。语句级...
触发器 trigger简介,原理和一些使用示例
触发器,trigger
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,,sql触发器的写法,简化代码量
oracle触发器(trigger).pdf
oracle触发器(trigger)[定义].pdf
他的作用很明显了,可以保证数据的完整性,下面有一个实例来说明他的好处,以及如果使编写代码不那么复杂二,触发器语法代码如下:CREATE TRIGGER trig
触发器 trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,它比数据本身标准的功能更精细和更复杂的数据控制能力。触发器不是由程序调用,而是由某个...
触发器.pptTrigger PPT documentTrigger PPT document
触发器的一些例子,可以快速的使用触发器进行数据库编程
从Oracle8i开始,Oracle引入了特殊的触发器,这些触发器并不是和特殊的DML事件相关联的(DML事件,如,INSERT,UPDATE和DELETE)。这些系统级别的触发器包括数据库启动触发器,DDL触发器和最终用户登陆/注销触发器。...
go-trigger - golang的全局事件触发器。利用一个ID注册事件,然后就可以在您项目的任何地方触发事件。
springTrigger 触发器,很多时候有一些事情需要交给程序定时自动执行,java项目中使用spring触发器方式实现这个功能的方式很常见,配置文件说明已打包,需要自己下载jar包