SQL 编辑器中的触发器

触发器是一类特殊的存储过程,当您使用一个或多个数据修改操作,如 UPDATE、INSERT 或 DELETE,在一个指定的表中修改数据时,它开始生效。触发器可以查询其它表,并且可以包括复杂的 SQL 语句。它们对于实施复杂业务规则或需求是非常有用的。例如,您可以控制在某个客户的当前帐号状态下,是否允许插入一个订单。

触发器对于实施参照完整性也很有用,参照完整性保留了当添加、更新、或者删除一些表中的行时,这些表之间的定义关系。然而,实施参照完整性的最好方法是在相关的表中定义主键和外部键约束。如果使用数据库图表,可以创建表之间的一个关系来自动创建一个外部键约束。

使用触发器的优点

触发器在以下方面非常有用:

创建一个触发器

触发器是一个数据库对象,通过指定以下信息来创建:

Transact-SQL for Microsoft(R) SQL Server(TM) databases 或 PL/SQL for Oracle databases中编写触发器。

要创建一个触发器,请按照以下步骤执行:

  1. 在“数据视图”(从“标准型”工具栏或者“视图”菜单可得到)中,展开文件夹。

  2. 在要创建触发器的表的名称上单击右键。从快捷方式菜单中选择“新建触发器”。

    用下面已经定义的SQL 语句创建一个新的触发器:

    Create Trigger /*Trigger_Name*/
    on /*Table_name*/
    For /*Insert, Update, Delete*/
    As
      print '触发器激活'
    
  3. 按下表修改触发器文本:
    替换 替换为
    1 /*Trigger_Name*/ 要指定给触发器的名称
    2 /*Table_name*/ 要附加触发器的表的名称
    3 /*Insert, Update, Delete*/ 能激活该触发器的事务类型

    例如,要对 employee 表的插入和更新事务创建一个名为 employee_insupd 的触发器,应该把触发器文本的前面三行更改为下面的内容:

    Create Trigger employee_insupd
    on employee
    For Insert, Update
    
  4. 用 SQL 编写其余的触发器文本。

关于 Microsoft SQL Server 数据库触发器的例子,请参阅 SQL Server 文档中的 创建触发器。关于 Transact-SQL 有关触发器的语法的详细内容,请参阅 SQL Server 文档中的 CREATE TRIGGER 语句

打开一个触发器

可以打开触发器来查看或者编辑一个存储在数据库中的已有触发器的文本。触发器脚本是用 Transact-SQL for Microsoft(R) SQL Server(TM) databases 或 PL/SQL for Oracle databases 编写的。

要打开一个触发器,请按照以下步骤执行:

  1. 在“数据视图”中,展开 Tables 文件夹。

  2. 展开要打开触发器的表。

  3. 在要打开的触发器的名称上单击右键,并且在快捷方式菜单中单击“设计”。

    -或者-

    双击要打开的触发器的名称。

保存一个触发器

要把一个新的触发器添加到数据库,或者要更新一个现存的已修改过的触发器,可以保存一个触发器。

要保存一个触发器,请按照以下步骤执行:

  1. 在 SQL 编辑器中,从“文件”菜单中选择“保存到数据库”。

  2. 如果正在更新一个现存的触发器,一个消息框将提示您确认保存操作。请选择“是”。

已保存的触发器出现在触发器所附加到的表的“数据视图”的文件夹中。

删除一个触发器

要禁止当指定事务发生后,在数据库上立即自动执行的触发器所定义的操作,可以删除该触发器。

如果您使用数据库图表来设计数据库,可能还想要删除那些在相关表之间实施参照完整性的触发器。为此目的,数据库图表使用关系而不是触发器。因此,如果一个触发器重复了数据库图表中的某个关系,应该删除该触发器或者是该关系。

要删除一个触发器,请按照以下步骤执行:

  1. 在“数据视图”中,展开文件夹。

  2. 展开要删除触发器的表。

  3. 在要删除的触发器上单击右键,并且从快捷方式菜单中选择“删除”。

  4. 将有一个信息提示您确认删除。请选择“是”。

    该触发器将被从数据库和“数据视图”中删除。