oracle触发器
来源:互联网 发布:下载驱狗软件 编辑:程序博客网 时间:2024/05/17 22:29
1. 触发器类型:DML触发器、替代触发器(INSTEAD OF)、系统触发器
2. 触发器触发次序:before(前触发)、after(后触发)
3. FOR EACH ROW选项说明触发器为“行触发器”,当省略FOR EACH ROW 选项时,BEFORE 和AFTER 触发器为“语句触发器”,而INSTEAD OF 触发器则只能为“行触发器”
4. WHEN 子句说明触发约束条件,WHEN 子句指定的触发约束条件只能用在BEFORE 和AFTER 行触发器中,不能用在INSTEAD OF 行触发器和其它类型的触发器中
5. 编写触发器时,需要注意以下几点:
1. 触发器不接受参数。
2. 一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。
3. 在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。
4. 触发器最大为32KB。若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用。
5. 在触发器的执行部分只能用DML语句(SELECT、INSERT、UPDATE、DELETE),不能使用DDL语句(CREATE、ALTER、DROP)。
6. 触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。
7. 在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。
8. 在触发器主体中不能申明任何Long和blob变量。新值new和旧值old也不能是表中的任何long和blob列。
9. 不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用有较大区别。
10. truncate 操作不会触发表上的delete触发器,而delete会正常触发。
6. 创建INSTEAD OF触发器需要注意以下几点:
1. 只能被创建在视图上,并且该视图没有指定WITH CHECK OPTION选项。
2. 不能指定BEFORE 或 AFTER选项。
3. FOR EACH ROW子可是可选的,即INSTEAD OF触发器只能在行级上触发、或只能是行级触发器,没有必要指定。
4. 没有必要在针对一个表的视图上创建INSTEAD OF触发器,只要创建DML触发器就可以了。
2. 触发器触发次序:before(前触发)、after(后触发)
3. FOR EACH ROW选项说明触发器为“行触发器”,当省略FOR EACH ROW 选项时,BEFORE 和AFTER 触发器为“语句触发器”,而INSTEAD OF 触发器则只能为“行触发器”
4. WHEN 子句说明触发约束条件,WHEN 子句指定的触发约束条件只能用在BEFORE 和AFTER 行触发器中,不能用在INSTEAD OF 行触发器和其它类型的触发器中
5. 编写触发器时,需要注意以下几点:
1. 触发器不接受参数。
2. 一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。
3. 在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。
4. 触发器最大为32KB。若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用。
5. 在触发器的执行部分只能用DML语句(SELECT、INSERT、UPDATE、DELETE),不能使用DDL语句(CREATE、ALTER、DROP)。
6. 触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。
7. 在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。
8. 在触发器主体中不能申明任何Long和blob变量。新值new和旧值old也不能是表中的任何long和blob列。
9. 不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用有较大区别。
10. truncate 操作不会触发表上的delete触发器,而delete会正常触发。
6. 创建INSTEAD OF触发器需要注意以下几点:
1. 只能被创建在视图上,并且该视图没有指定WITH CHECK OPTION选项。
2. 不能指定BEFORE 或 AFTER选项。
3. FOR EACH ROW子可是可选的,即INSTEAD OF触发器只能在行级上触发、或只能是行级触发器,没有必要指定。
4. 没有必要在针对一个表的视图上创建INSTEAD OF触发器,只要创建DML触发器就可以了。
7. 系统事件触发器既可以建立在一个模式上,又可以建立在整个数据库上。当建立在模式(SCHEMA)之上时,只有模式所指定用户的DDL操作和它们所导致的错误才激活触发器, 默认时为当前用户模式。当建立在数据库(DATABASE)之上时,该数据库所有用户的DDL操作和他们所导致的错误,以及数据库的启动和关闭均可激活触发器。要在数据库之上建立触发器时,要求用户具有ADMINISTER DATABASE TRIGGER权限。
数据库:
1. SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)以及数据控制语言(DCL)
2. DDL(Data Manipulation Language)是数据操作语言 :insert、update、delete
DML(Data Definition Language)是数据库模式定义语言:create database、create table/view、alter table/view、delete table/view、 truncate table
DCL(Data Control Language)是数据库控制语言,是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句
DQL(Data Query Language)是数据查询语言:select
0 0
- oracle 触发器
- Oracle触发器
- Oracle触发器
- oracle触发器
- ORACLE触发器
- oracle触发器
- Oracle 触发器
- oracle触发器
- Oracle触发器
- Oracle 触发器
- Oracle 触发器
- Oracle 触发器
- oracle触发器
- oracle 触发器
- Oracle触发器
- oracle触发器
- ORACLE触发器
- ORACLE 触发器
- HDUOJ 1754 - I hate it 与线段树解法
- 当你在浏览器中输入Google.com并且按下回车之后发生了什么?
- c++ cout 格式化输出浮点数、整数及格方法
- iOS静态库(.a 和framework)
- STL源码剖析 - 第5章 关联式容器 - hash_set
- oracle触发器
- Linux中如何新建用户
- 指针函数与函数指针的区别
- (1.2.4)数组和广义表
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- TDDL配置数据源
- 公司内网Debian Server上的openvpn服务器搭建并通过SSH隧道转发到广域网
- Matlab Intro - FFT
- HDU - 1318 Palindromes(字符串)