触发器的主要优点 触发器是自动的:当对表中的数据作了任何修 改(比如手工输入或者应用程序采取的操作) 之后立即被激活。 触发器可以通过数据库中的相关表进行层叠更 改 触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。而且比使用核查约束更 为方便的时,触发器可以引用其它数据表中的 列
11 触发器的主要优点 • 触发器是自动的:当对表中的数据作了任何修 改(比如手工输入或者应用程序采取的操作) 之后立即被激活。 • 触发器可以通过数据库中的相关表进行层叠更 改。 • 触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。而且比使用核查约束更 为方便的时,触发器可以引用其它数据表中的 列
创建触发器的规则和限制 在创建和使用触发器时,需要遵循下列规则: Create Trigger语句必须是批处理中的第一个语 句,且该批处理中随后出现的其它所有语句都 将被解释为 Create Trigger语句定义的一部分。 在默认情况下,创建触发器的权限将分配给数 据表的所有者,且不能将该权限转给其它用户。 触发器是数据库对象,其名称必须遵循标识符 的命名规则 虽然触发器可以引用当前数据库以外的对象, 但只能在当前数据库中创建触发器。 12
12 创建触发器的规则和限制 • 在创建和使用触发器时,需要遵循下列规则: • Create Trigger语句必须是批处理中的第一个语 句,且该批处理中随后出现的其它所有语句都 将被解释为Create Trigger语句定义的一部分。 • 在默认情况下,创建触发器的权限将分配给数 据表的所有者,且不能将该权限转给其它用户。 • 触发器是数据库对象,其名称必须遵循标识符 的命名规则。 • 虽然触发器可以引用当前数据库以外的对象, 但只能在当前数据库中创建触发器
虽然不能在临时数据表上创建触发器,但是触 发器可以引用临时数据表。 既不能在系统数据表创建触发器,也不可以引 用系统数据表 在包含使用 delete或 update操作定义的外键的表 中,不能定义 instead of和 linstead of update触 发器。 虽然 TRUNCATE TABLE语句类似于没有 WHERE子句(用于删除行)的 DELETE语句, 但它并不会引发 DELETE触发器,因为 TRUNCATE TABLE语句没有被记入日志。 Writ语句不会引发 insert或 update触发器 13
13 • 虽然不能在临时数据表上创建触发器,但是触 发器可以引用临时数据表。 • 既不能在系统数据表创建触发器,也不可以引 用系统数据表 • 在包含使用delete或update操作定义的外键的表 中,不能定义instead of 和instead of update 触 发器。 • 虽然 TRUNCATE TABLE 语句类似于没有 WHERE 子句(用于删除行)的 DELETE 语句, 但它并不会引发 DELETE 触发器,因为 TRUNCATE TABLE 语句没有被记入日志。 • Writetext语句不会引发insert或update触发器
下面的语句不可以用于创建触发器: Alter database、 Create Database、 Disk Init、 Disk Resize、 Drop Database、 Load database Load log、 Reconfigure、 Restore database、 Restore log 当创建一个触发器时必须指定:(1)名称;(2)在 其上定义触发器的表;(3)触发器将何时激发; (4)激活触发器的数据修改语句
14 • 下面的语句不可以用于创建触发器: • Alter Database、Create Database、Disk Init、 Disk Resize、Drop Database、Load Database、 Load Log、Reconfigure、Restore Database、 Restore Log。 • 当创建一个触发器时必须指定: ⑴名称;⑵在 其上定义触发器的表;⑶触发器将何时激发; ⑷激活触发器的数据修改语句