暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
触发器
679
9页
1次
2020-06-02
5墨值下载
触发器语法
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} triggering_event
referencing_clause
[WHEN trigger_condition]
[FOR EACH ROW]
trigger_body;
其中:
trigger_name
是触发器的名称,
triggering_event
说明了激发触发器的事件(也可能包括特殊的表或视图)
trigger_body
是触发器的代码。
referencing_clause
用来引用正在处于修改状态下的行中的数据,
如果在
WHEN
子句中指定
trigger_condition
的话,则首先对该条件求值。触发器主体只
有在该条件为真值时才运行。
使用触发器约束
SELECT
语句不能触发触发器;
触发器不能象存储过程或函数那样被显式地调用,只能由事件来触发;
触发器可以调用数据库存储过程、函数和包。
必须将适当的权限授予用户,用户才能
CREATE
DROP
ENABLE
DISABLE
触发器。
触发器可被失效或使之有效。
查看触发器脚本:
select text
from user_source
where TYPE='TRIGGER'
1
2
3
DML
触发器的组成与类型
大体结构
DML
触发器组成:
触发时间:
触发顺序:
行级触发器和语句级触发器区别:
主要在于影响次数不同:
如果该语句只影响一行,则语句级与行级触发效果相同。
如果该语句影响多行,则行级触发的次数比语句级触发的次数多。
具体应根据进行一个操作时触发器的触发次数,来决定是创建一个语句级还是行级触发器。
BEFORE
型语句级触发器:
CREATE OR REPLACE TRIGGER secure_emp
BEFORE INSERT ON emp
BEGIN
IF (TO_CHAR(SYSDATE,’DY’) in (‘SAT’,’SUN’))
OR (to_number(TO_CHAR(sysdate,’HH24’)) NOT BETWEEN 8 AND 18) THEN
RAISE_APPLICATION_ERROR(-20500,’you may only insert into EMP during
normal hours.’);
END IF;
END;
1
2
3
4
5
6
7
AFTER
型语句级触发器
Create or replace TRIGGER check_sal_count
AFTER UPDATE OF sal ON emp
Declare
V_sal_changes NUMBER;
V_max_changes NUMBER;
Begin
SELECT upd,max_upd INTO v_sal_changes,v_max_changes FROM audit_able
WHERE user_name=user AND table_name=‘EMP’ AND column_name=‘SAL’;
IF v_sal_changges>v_max_changes THEN
RAISE_APPLICATION_ERROR(-20501,’you may only make a maximum of’||
TO_CHAR(v_max_chages)||’to the sal column’);
End if;
of 9
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜