惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Help Net Security
Help Net Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
T
Threatpost
T
Tor Project blog
AWS News Blog
AWS News Blog
S
Schneier on Security
Cyberwarzone
Cyberwarzone
The Hacker News
The Hacker News
Scott Helme
Scott Helme
C
Cybersecurity and Infrastructure Security Agency CISA
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Palo Alto Networks Blog
P
Proofpoint News Feed
Vercel News
Vercel News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
V2EX
腾讯CDC
C
CERT Recently Published Vulnerability Notes
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V2EX - 技术
V2EX - 技术
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
D
Docker
Security Latest
Security Latest
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
Know Your Adversary
Know Your Adversary
宝玉的分享
宝玉的分享
爱范儿
爱范儿
Simon Willison's Weblog
Simon Willison's Weblog
N
News | PayPal Newsroom
Recent Announcements
Recent Announcements
小众软件
小众软件
Project Zero
Project Zero
SecWiki News
SecWiki News
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
Cloudbric
Cloudbric
博客园 - Franky
Forbes - Security
Forbes - Security
C
Cisco Blogs
Webroot Blog
Webroot Blog
H
Help Net Security

博客园 - 系咪噶

[JAVA基础]流文件读写文件编码转换 最近转战东软 apache 新建虚拟机 +Zend Framework建立 Apache + php 配置 php基础教程之PHP面向对象技术(全面讲解) 今日无事,将一同志之毕设完结 SQL查询基本练习1:(作业) SQL Server 高级应用(周六讲座) 面向对象之CoreJava(第一课) CVS的使用(一课时) PL/SQL第二课(作业) PL/SQL第二课(学习笔记) PL/SQL第一课(学习笔记) Oracle第五课(学习笔记) Oracle第四课(学习笔记) 全步骤安装mysql SQL Server 存储过程的分页 无法连接到Visual Studio 的Localhost Web服务器 Oracle第三课(学习中笔记)
PL/SQL第三课(学习笔记)
系咪噶 · 2008-08-15 · via 博客园 - 系咪噶

TRIGGER触发器
1、TRIGGER与过程/函数类似
    都是带有名字的执行块
    都有声明,执行体和异常处理部分
2、TRIGGER与过程/函数的差别
    TRIGGER必须存储在数据库中
    对于过程和函数必须显示地由另一个运行块调用。对于TRIGGER,是由触发事件自动激发。触发事件是在数据库表上执行的DML(INSERT ,UPDATE , DELETE) 数据操作。

创建TRIGGER
1、语法
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE|AFTER}triggering_event ON table_reference
[FOR EACH ROW [WHEN trigger_condition]]
trigger_body;
2必须的部分
触发器名:trigger_name;
触发事件:triggering_event;
触发器主体:trigger_body
3、可选部分
WHEN 子句

例子:
--AFTER
CREATE OR REPLACE TRIGGER trg_emp
    AFTER INSERT OR UPDATE OR DELETE ON s_emp
DECLARE
    v_cnt NUMBER;
BEGIN
    SELECT COUNT(*) INTO v_cnt
     FROM s_emp
    DBMS_OUTPUT.PUT_LINE(v_cnt||' rows in s_emp');
END
--BEFORE
CREATE OR REPLACE TRIGGER trg_emp
    BEFORE INSERT OR UPDATE OR DELETE ON s_emp
BEGIN
    DBMS_OUTPUT.PUT_LINE('this trigger is before ...');
END

触发器激发的顺序
1、如果存在,执行语句级别之前的触发器
2、对于受语句影响的每一行:
    语句存在,执行级别之前的触发器
    执行语句本身,
    如果存在,执行行级别之后的触发器
3、如果存在,执行语句级别之后的触发器。

触发器的限制
1、触发器的主体是PL/SQL语句块
2、所有能出现在PL/SQL块中的语句在触发器主体中都是合法的限制
    不应该使用事务控制语句COMMIT,ROOLBACK ,SAVEPOINT
    由触发器调用的任何过程于函数都不能使用事务控制语句
    不能声明任何LONG或LONG RAW变量
    可以访问的表有限