- 1
- 0
- 约1.12万字
- 约 36页
- 2018-03-04 发布于浙江
- 举报
[计算机软件及应用]补充 数据库系统原理及应用-触发器
数据库系统原理及应用 SQL Server 2000编程--触发器 本章目标 触发器的使用 在数据库中的相关表上实现级联更改 在数据库的相关表上使用触发器可实现级联更新或删除 强制比 CHECK 约束更复杂的数据完整性 和 CHECK 约束不同,触发器可以引用其他表中的列 通过下列方法使用触发器来强制复杂的引用完整性:根据情况确定是否级联更新与删除、创建多行触发器、在数据库间强制引用完整性 定义用户定制的错误信息 通过使用触发器,可以在特定条件出现时调用预定义或动态定义的定制错误信息 触发器的使用 维护非标准数据 触发器可以用来在非标准数据库环境中维护底层的数据完整性。非标准数据常常是人为得出的或冗余的数据值 在下列情况下,必须使用触发器:引用完整性需要的不是精确匹配,或用户需要定制的信息和复杂的错误信息 比较数据修改前后的状态 大部分触发器提供了引用被修改数据的能力,这样就允许用户在触发器中引用正被修改语句所影响的行 使用触发器的考虑事项 大部分触发器在动作后执行,约束和 INSTEAD OF 触发器是在动作前执行的 大部分触发器在所定义的表上执行 INSERT、UPDATE 或 DELETE 语句之后执行,而约束是在语句执行前检查的 约束最先被检查 如果触发器表上存在约束,则它们在触发器执行之前被检查。如果违反了约束,则触发器不执行 表对同一动作可以有多个触发器 SQL Server 2000 允许在单个表上多个触发器的嵌套。一个表上可以有多个触发器,每个触发器可以定义为单个动作或多个动作 表的拥有者可以指定表上第一个和最后一个执行的触发器 当表上有多个触发器时,表的拥有者可以使用系统存储过程 sp_settriggerorder 指定第一个和最后一个执行的触发器 使用触发器的考虑事项(续) 必须具有执行触发器内所有语句的权限 只有表的拥有者、sysadmin 固定服务器角色和 db_owner 与 db_ddladmin 固定数据库角色的成员能创建和删除那个表的触发器。权限不能被转让 表的拥有者不能在视图或临时表上创建 AFTER 触发器 但触发器可以引用视图和临时表 表的拥有者可以在表和视图上创建 INSTEAD OF 触发器 INSTEAD OF 触发器极大地延伸了视图所能支持的更新类型 触发器不应该返回结果集 触发器可以包含返回结果集的语句,但不建议这么做,因为当 UPDATE、INSERT 或 DELETE 语句执行的时候,用户或开发者往往并不需要什么结果集 使用触发器的考虑事项(续) 触发器可以处理多行动作 引发触发器的 INSERT、UPDATE 或 DELETE 动作可能影响多行,可以选择一起处理所有的行,或只允许修改符合条件的行 为了测定是否影响了多行,可以使用系统函数 @@ROWCOUNT AFTER 触发器对每个 UPDATE、INSERT 或 DELETE 语句只执行一次 触发器类型和触发顺序存储在 sysobjects 表的 status 列中 一共使用9个二进制位记录信息,其中3位指出是插入、更新还是删除触发器,3位由第一触发器使用以指出触发器类型,3位由最后触发器使用以指出触发器类型 使用 OBJECTPROPERTY 函数以查看触发器对象的相应属性信息 触发器的类型 DELETE 触发器 INSERT 触发器 UPDATE 触发器 如何创建触发器 FOR 和 AFTER 是完全相等的,创建相同类型的触发器,在INSERT、UPDATE 或 DELETE 语句执行后触发 INSTEAD OF 触发器取消触发动作,执行替代操作 创建触发器后,其信息插入 sysobjects 和 syscomments 系统表中 不能包含某些语句 SQL Server 不允许在触发器中使用下列语句:ALTER DATABASE、CREATE DATABASE、DISK INIT、DISK RESIZE、DROP DATABASE、LOAD DATABASE、LOAD LOG、RECONFIGURE、RESTORE DATABASE、RESTORE LOG 更改和删除触发器 更改触发器 语法:ALTER TRIGGER 触发器名 …… 使用新的定义代替触发器原有的定义,触发动作也可以更改 由于延迟名称解析,触发器可以引用触发器定义时不存在的表,但是创建触发器时会收到一条警告信息 禁用或启用触发器 语法:ALTER TABLE 表名 { ENABLE | DISABLE } TRIGGER {ALL | 触发器名 [, …n] } 更改和删除触发器(续) 删除触发器 语法:DROP TRIGGER 触发器名 若关联表被删除,则触发器自动删除 INSERT触发器 DELETE触发器 UPDATE触发器 INS
原创力文档

文档评论(0)