行级触发器
来源:互联网 发布:怎么购买淘宝店铺 编辑:程序博客网 时间:2024/05/21 21:03
CREATE TRIGGER 语句 [SQL Remote]
说明
此语句用于在数据库中创建新触发器。它是一种形式的触发器,专门设计用于 SQL Remote。
语法
CREATE TRIGGER trigger-name trigger-time
trigger-event, ...
[ ORDER integer ] ON table-name
[ REFERENCING [ OLD AS old-name ]
[ NEW AS new-name ] ]
[ REMOTE AS remote-name ] ]
[ FOR EACH { ROW | STATEMENT } ]
[ WHEN ( search-condition ) ]
[ IF UPDATE ( column-name ) THEN
[ { AND | OR } UPDATE ( column-name ) ] ... ]
compound-statement
[ ELSEIF UPDATE ( column-name ) THEN
[ { AND | OR } UPDATE ( column-name ) ] ...
compound-statement
END IF ] ]
trigger-time:
BEFORE | AFTER | RESOLVE
trigger-event:
DELETE | INSERT | UPDATE
| UPDATE OF column-name [, column-name, ...]
参数
trigger-time 可以定义行级触发器在插入、更新或删除之前 (BEFORE) 或之后 (AFTER) 执行。语句级触发器在语句后 (AFTER) 执行。RESOLVE 触发器时间用于 SQL Remote:它只在行级 UPDATE 或 UPDATE OF 列列表之前触发。
只要行中发生更新,BEFORE UPDATE 触发器就会触发,而不论新值是否与旧值不同。AFTER UPDATE 触发器只在新值与旧值不同时才触发。
触发器事件 触发器可以由以下一个或多个事件触发:
-
DELETE 每当删除关联表中的行时激活。
-
INSERT 每当有新行插入到与触发器关联的表中时激活。
-
UPDATE 每当更新关联表中的行时激活。
-
UPDATE OF column-list 每当更新关联表中的行和修改 column-list 中的列时激活。
用法
任何地方。
权限
必须有 RESOURCE 权限和表的 ALTER 权限,或者必须有 DBA 权限。CREATE TRIGGER 在表上放置表锁,因此要求独占使用表。
副作用
自动提交。
另请参见
- UPDATE 语句
说明
CREATE TRIGGER 语句创建与数据库中的表关联的触发器,并且在数据库中存储触发器。
BEFORE UPDATE 触发器在行上发生更新的任何时候触发,不论新值是否不同于旧值。AFTER UPDATE 触发器仅当新值不同于旧值时才触发。
行级和语句级触发器
触发器声明为行级触发器(此情况下,它在每行修改之前或之后执行)或语句级触发器(此情况下,它在整个触发器语句完成后执行)。
可以定义行级触发器在插入、更新或删除之前 (BEFORE) 或之后 (AFTER) 执行。语句级触发器在语句后 (AFTER) 执行。RESOLVE 触发器事件用于 SQL Remote:它仅在行级 UPDATE 或 UPDATE OF column-lists 之前触发。
要将触发器声明为行级触发器,请使用 FOR EACH ROW 子句。要将触发器声明为语句级触发器,可以使用 FOR EACH STATEMENT 子句或忽略 FOR EACH 子句。为清楚起见,建议在声明语句级触发器时输入 FOR EACH STATEMENT 子句。
触发顺序
同时触发(之前、之后或解析)的同类型触发器可以使用 ORDER 子句确定触发器的触发顺序。
引用已删除和插入的值
REFERENCING OLD 和 REFERENCING NEW 子句允许引用已删除和插入的行。在此子句中,UPDATE 处理为删除后插入。
REFERENCING REMOTE 子句用于 SQL Remote。它允许引用 UPDATE 语句的 VERIFY 子句中的值。它仅能用于 RESOLVE UPDATE 或 RESOLVE UPDATE OF column-list 触发器。
REFERENCING OLD 和 REFERENCING NEW 的含义不同,具体取决于触发器是行级还是语句级触发器。对于行级触发器,REFERENCING OLD 子句允许引用更新或删除之前行中的值,REFERENCING NEW 子句允许引用已插入或更新的值。在 BEFORE 和 AFTER 触发器中可以引用 OLD 和 NEW 行。REFERENCING NEW 子句允许在插入或更新操作发生之前在 BEFORE 触发器中修改新行。
对于语句级触发器,REFERENCING OLD 和 REFERENCING NEW 子句引用保存行的新旧值的声明过的临时表。这些表的缺省名称是 deleted 和 inserted。
WHEN 子句使触发器仅对搜索条件计算为真值的行触发。
用同一值更新值
只要行中发生更新,BEFORE UPDATE 触发器就会触发,而不论新值是否与旧值不同。AFTER UPDATE 触发器只在新值与旧值不同时才触发。
示例
-
当任命一个新的部门经理时,更新该部门中雇员的 manager_id 列。
CREATE TRIGGERtr_manager BEFORE UPDATE OF dept_head_id ON departmentREFERENCING OLD AS old_deptNEW AS new_deptFOR EACH ROWBEGIN UPDATE employee SET employee.manager_id=new_dept.dept_head_id WHERE employee.dept_id=old_dept.dept_idEND
- ORACLE触发器 行级触发器
- 行级触发器和语句级触发器
- Oracle触发器介绍 行级触发器
- Oracle触发器介绍 行级触发器
- 行级触发器
- 行级触发器
- 行级触发器与语句级触发器的区别
- Oracle 行级触发器学习
- 行触发器
- PL/SQL基础编程之(九)[事务的一致性、隔离性、并发性][行级触发器、语句触发器、替换触发器]
- 为什么SQL SERVER2000没有行级触发器
- SQL SERVER 行级触发器(准)
- 关于mssql 2000 的 行级触发器
- 行级触发器相关的变异表
- oracle的行级触发器使用
- oracle的行级触发器使用
- 行级触发器的创建和使用
- oracle数据库语句级触发器和行级触发器的使用
- Google, Happy Birthday.
- 一个控制鼠标的有趣的程序
- 信息安全技术基础学习指导
- Oracle信息安全管理架构帮助企业实现“由内到外”的整体安全
- 第一天 从恐惧开始
- 行级触发器
- ADO常数全记录
- 收藏.C++.字符串封装类
- ALG.EXE网络病毒
- XMLHTTP 实现异步调用
- 学习方向啊
- CutEditor在线编辑器的使用心得——绝对是最好的.net在线编辑器
- ASA SQL 参考
- 9个点画10条线