• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Oracle 11g 触发器新增功能

Oracle 11g 触发器新增功能

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Oracle 触发器,Oracle 11g,Oracle 1等相关知识,希望本文的分享对您有所帮助

Oracle允许超过一个触发器建立相同的时间点,但它从来不保证它们的执行顺序。Oracle 11g触发器语法现在包括FOLLOWS子句保证了触发

触发器的执行顺序

组合触发器

启用和禁用触发器

触发器的执行顺序

Oracle允许超过一个触发器建立相同的时间点,但它从来不保证它们的执行顺序。Oracle 11g触发器语法现在包括FOLLOWS子句保证了触发器的执行顺序在相同时间点。下面的例子创建一张表和两个在相同时间点触发的触发器

CREATE TABLE trigger_follows_test (

id NUMBER,

description VARCHAR2(50)

);

CREATE OR REPLACE TRIGGER trigger_follows_test_trg_1

BEFORE INSERT ON trigger_follows_test

FOR EACH ROW

BEGIN

DBMS_OUTPUT.put_line('TRIGGER_FOLLOWS_TEST_TRG_1 - Executed');

END;

/

CREATE OR REPLACE TRIGGER trigger_follows_test_trg_2

BEFORE INSERT ON trigger_follows_test

FOR EACH ROW

BEGIN

DBMS_OUTPUT.put_line('TRIGGER_FOLLOWS_TEST_TRG_2 - Executed');

END;

/

我们插入测试表,触发器的执行顺序没有保证。

SQL> SET SERVEROUTPUT ON

SQL> INSERT INTO trigger_follows_test VALUES (1, 'ONE');

TRIGGER_FOLLOWS_TEST_TRG_1 - Executed

TRIGGER_FOLLOWS_TEST_TRG_2 - Executed

1 row created.

SQL>

我们可以指定触发器TRIGGER_FOLLOWS_TEST_TRG_2在TRIGGER_FOLLOWS_TEST_TRG_1之前执行通过重建使用FOLLOWS子句的TRIGGER_FOLLOWS_TEST_TRG_1得触发器。

CREATE OR REPLACE TRIGGER trigger_follows_test_trg_1

BEFORE INSERT ON trigger_follows_test

FOR EACH ROW

FOLLOWS trigger_follows_test_trg_2

BEGIN

DBMS_OUTPUT.put_line('TRIGGER_FOLLOWS_TEST_TRG_1 - Executed');

END;

/

现在TRIGGER_FOLLOWS_TEST_TRG_1总是TRIGGER_FOLLOWS_TEST_TRG_2后面执行

SQL> SET SERVEROUTPUT ON

SQL> INSERT INTO trigger_follows_test VALUES (2, 'TWO');

TRIGGER_FOLLOWS_TEST_TRG_2 - Executed

TRIGGER_FOLLOWS_TEST_TRG_1 - Executed

1 row created.

SQL>

删除测试表。

DROP TABLE trigger_follows_test;

组合触发器

组合触发器允许代码为一个或多个时间点为特定的对象结合起来,单独的时间点可以共享一个全局声明部分,这种状态在试用期间一直保持,一旦语句结束,不管执行成功还是错误,,触发器状态将被清理干净。在以前的版本中,该类型功能只能通过定义多个触发器和全局变量在一个单独的包中。

组合触发器的动作定义和其他DML触发器相同,此外增加了 COMPOUND TRIGGER 子句。触发器的主体是由一个可选的全局声明部分及一个或多个计时点部分,每个可能包含一个不能维持状态的本地声明。

CREATE OR REPLACE TRIGGER

FOR ON

COMPOUND TRIGGER

-- Global declaration.

g_global_variable VARCHAR2(10);

BEFORE STATEMENT IS

BEGIN

NULL; -- Do something here.

END BEFORE STATEMENT;

BEFORE EACH ROW IS

BEGIN

NULL; -- Do something here.

END BEFORE EACH ROW;

AFTER EACH ROW IS

BEGIN

NULL; -- Do something here.

END AFTER EACH ROW;

AFTER STATEMENT IS

BEGIN

NULL; -- Do something here.

END AFTER STATEMENT;

END ;

/

linux

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle 11g 触发器新增功能

相关文章

  • 2018-12-05浅谈MySQL漂流记(六)
  • 2017-05-11设置MySQL中的数据类型来优化运行速度的实例
  • 2018-12-05mysql创建触发器的详细过程
  • 2018-12-05MySQL 有输入输出参数的存储过程实例
  • 2018-12-05oracle 声明游标(不具备字段)规则应用
  • 2018-12-05mysql数据库从服务器移植到个人PC的方法
  • 2017-05-11MYSQL使用inner join 进行 查询/删除/修改示例
  • 2018-12-05win2003服务器下配置 MySQL 群集(Cluster)的方法
  • 2018-12-05把SQL数据库部署到远程数据库服务器中
  • 2018-12-05sql数据库的增删改图文教程(phpMyAdmin使用教程)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle 10G:PL/SQL正规表达式(正则表达式)手册
    • 解析MYSQL显示表信息的方法
    • SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解
    • mysql字符集和数据库引擎修改方法分享
    • mongodb 3.4下远程连接认证失败应该怎么办?
    • 推荐10款常用的事务表用法
    • mysql常用基础操作语法(十)~~子查询【命令行模式】
    • 详细介绍mysql5.6.21安装与配置详细步骤(图文)
    • SQL Server 数据库安全管理介绍
    • MySQL 优化设置步骤

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有