课本上没有的东西:触发器
来源:互联网 发布:js reverse 编辑:程序博客网 时间:2024/04/29 12:31
一般意义的存储过程,即用户自定义的存储过程和系统存储过程。
触发器:是一种特殊的存储过程,即如下。
触发器的概念及作用
触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1) 强化约束(Enforce restriction)
触发器能够实现比CHECK 语句更为复杂的约束。
(2) 跟踪变化Auditing changes
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。
(3) 级联运行(Cascaded operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4) 存储过程的调用(Stored procedure invocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、 UPDATE、 DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。
设计触发器
执行 INSTEAD OF 触发器代替通常的触发动作。INSTEAD OF 触发器还可在带有一个或多个基表的视图上定义,而在这些视图上这些触发器可扩展视图可支持的更新类型。
在执行了 INSERT、UPDATE 或 DELETE 语句操作之后执行 AFTER 触发器。AFTER 触发器只能在表上指定。
创建触发器时需指定:
•名称。
•在其上定义触发器的表。
•触发器将何时激发。
•激活触发器的数据修改语句。
有效选项为 INSERT、UPDATE 或 DELETE。多个数据修改语句可激活同一个触发器。例如,触发器可由 INSERT 或 UPDATE 语句激活。
•执行触发操作的编程语句。
- 课本上没有的东西:触发器
- 抄抄课本的东西(软件工程导论)
- 队列:按照课本上的
- 课本上的数据库知识
- 课本上经典的排序算法复习
- 实验四,课本上的一个代码
- 没有自己的东西
- 天下没有不劳而获的东西
- 离散数学课本上的最短路径算法
- 突然发现,有一年的时间没有在这个Blog上写东西了。
- SQL中设置用户权限的方法(我们的课本中没有)
- 写东西的心情没有啦!
- csdn上的好东西
- 在google上的东西
- 可以上google的东西
- 曾经的小学课本
- 小时候的语文课本
- 课本的T_SQL语言
- SkyDrive客户端开发过程详解
- Ogre:Animation(Ogre中的动画)
- 资源DLL
- 很久没搞C了!看见了一道指针的题!回忆一下!
- 开始做小师傅发给我的练习题了,我的目标是打好基础学好架构
- 课本上没有的东西:触发器
- [转贴天涯] 自己
- 青春的本质
- 设计class犹如设计type——effective C++学习笔记
- C#类型转化问题
- Android new vendor ID enable
- ARM S3C2410 Linux win_ce MDK
- 最近辞退了一个实习生,心情好了很多,差点儿犯了曾有过的同样的错误,趁早让你走人一切就正确了
- centos5.5 中文字体安装