一些我面试过程中遇到j2ee知识点的整理(2),答案来源于网络

来源:互联网 发布:jenkins配置linux节点 编辑:程序博客网 时间:2024/05/16 19:28
触发器
触发器的定义就是说某个条件成立的时候,你触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。

然后,触发器的触发条件其实在你定义的时候就已经设定好的了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。
具体举例:
1. 在一个表中定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个就是删除表的操作就是触发器执行的条件了。
2. 在一个表中定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。
触发器简介:
触发器是一种特殊类型的过程。与普通过程不同的是,过程需要用户显式地调用才执行,而触发器则是当某些事件发生时,由Oracle自动执行。
触发器主要由如下几个部分组成:
触发事件:
触发条件:
触发对象:
触发操作:
编写触发器时,需要注意以下几点:
触发器不接受参数。
一个表上最多可以有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。还需要注意,各个触发器之间不能有矛盾。
在一个表上的触发器越多,对在该表上的DML操作性能影响就越大。
触发器最大为32KB。如果确实需要,可以先建立过程,然后在触发器中用CALL语句调用。
在DML触发器中只能使用DML语句(select,insert,update,delete)。
在系统触发器中只能包含DDL语句(create,alter,drop)。
触发器中不能包含事务控制语句(commit,rollback,savepoint)。因为触发器是触发语句的一部门,触发语句被提交或回退时,触发器也就被提交或回退了。
在触发器主体中调用的任何过程、函数都不能使用事务控制语句。
在触发器主体中不能声明任何long和blob变量。新值new、旧值old也不能指向表中的任何long和blog列
不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用都有较大区别。
0 0
原创粉丝点击