Sqlserver 技术知识点之二十 本节简介了系统存储过程和触发器这两种特殊类型的存储过程。系统存储过程是系统创立的存储过程,目的是可以以便地从系统表中查询信息或完毕与更新数据库表有关的管理任务或其他系统管理任务。系统存储过程以“sp_”为开头,在 Master 数据库中创立并保留在该数据库中,为数据库管理者所有。 触发器是一种特殊类型的存储过程,它不一样于我们前面简介过的存储过程。触发器重要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如 UPDATE、 INSERT、 DELETE 这些操作时,SQL Server 就会自动执行触发器所定义的 SQL 语句,从而保证对数据的处理必须符合由这些 SQL 语句所定义的规则。 触发器的重要作用就是其可以实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器尚有其他许多不一样的功能:(1) 强化约束(Enforce restriction)触发器可以实现比 CHECK 语句更为复杂的约束。(2) 跟踪变化 Auditing changes 触发器可以侦测数据库内的操作,从而不容许数据库中未经许可的指定更新和变化。(3) 级联运行(Cascaded operation)。触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。(4) 存储过程的调用(Stored procedure invocation)。为了响应数据库更新触发器可以调用一种或多种存储过程,甚至可以通过外部过程的调用而在 DBMS(数据库管理系统)自身之外进行操作。 Sql Server 支持两种类型的触发器:AFTER 触发器和 INSTEAD OF 触发器。其中 AFTER 触发器即为 SQL Server 版本此前所简介的触发器。该类型触发器规定只有执行某一操作(INSERT UPDATE DELETE) 之后,触发器才被触发,且只能在表上定义。可认为针对表的同一操作定义多种触发器。对于 AFTER 触发器,可以定义哪一种触发器被最先触发,哪一种被最终触发,一般使用系统过程 sp_settriggerorder 来完毕此任务。 在创立触发器前必须考虑到如下几种方面:CREATE TRIGGER 语句必须是批处理的第一种语句;表的所有者具有创立触发器的缺省权限,表的所有者不能把该权限传给其他顾客;触发器是数据库对象,因此其命名必须符合命名规则;尽管在触发器的 SQL 语句中可以参照其他数据库中的对象,不过,触发器只能创立在目前数据库中;虽然触发器可以参照视图或临时表,但不能在视图或临时表上创立触发器,而只能在基表或在创立视图的表上创立触发器;一种触发器只能对应一种表,这是由触发器的机制决定的;尽管 TRUNCATE TABLE 语句可以删除表中的所有数据,但是,它不能触发触发器。
- 粉丝: 3814
- 资源: 59万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助