使用

SQL Enterprise Manager创建触发器

使用SQL Enterprise Manager创建触发器要比使用ISQL/w要容易的多。使用SQL Enterprise Manager创建触发器的主要优势是它能保存触发器的文本，这样你就可以在以后的某个时候返回来修改之。通过使用该程序，你可以很容易地记录和管理你创建的触发器。

在使用SQL Enterprise Manager来创建触发器时，首先启动程序，选择存储你数据表的的数据库，从菜单中选择Manage|Triggers,这时就会显示Manage Triggers对话框。（见图12.5）。

图12.5 触发器管理窗口

在该对话框的顶部有两个下拉式列表，在Table列表内，你可以选择一个数据表。每一个触发器必须和一个表格相关联而且只和一个表格相关联，在触发器下拉列表框中在单词<new>的旁边包含三个小图标，这三个图标分别表示INSERT，UPDATE和DELETE，你可以使用该列表框对被这些动作触发的触发器进行选择。单词<new>将在你保存该触发器后被该触发器的名称所代替。

在对话框的文本区域内，提供了触发器的缺省文本，如下所示：

CREATE TRIGGER <TRIGGER NAME> ON dbo.webusers

FOR INSERT ,UPDATE,DELETE

AS

如果你已经学过前面的内容，你肯定对该文本非常熟悉；这是一个触发器的创建语句。使用你要用的触发器名称来代替表达式< TRIGGER NAME>

该自动创建语句创建一个由INSERT，UPDATE和DELETE触发的触发器。如果你要为各个动作创建不同的触发器，或者创建一个只由一个动作触发的触发器，你只需要修改这个缺省的语句。简单地删除你不想使用的动作就可以了。

在关键字AS下面，你可以输入你触发器所要用的语句。比如下面的触发器在有一个新用户添加到表webusers中时在表weblog中添加一个新的记录：

CREATE TRIGGER tr_webusers_insert ON dbo.webusers

FOR INSERT

AS

INSERT weblog(activity) VALUES (

“New User Added”)

你可以在Manage Triggers对话框内点击保存对象按钮(一个绿色的三角形)来保存一个触发器。当一个触发器第一次被保存时，触发器的文本从屏幕上消失了。你需要再一次从触发器下拉列表中选择该触发器。

在触发器第一次被保存之后，SQL Server自动地在你的触发器语句内添加新增的语句。比如在触发器tr_webusers_insert保存之后，tr_webusers_insert之内的文本变为：

if exists (select * from sysobjects where id=object_id(

‘dbo.tr_webusers_insert’) and sysstat & 0xf =8)

drop trigger dbo.tr_webusers_insert

GO

CREATE TRIGGER tr_webusers_insert ON dbo.webusers

FOR INSERT

AS

INSERT weblog(activity) VALUES (

“New User Added”)

GO

这些添加的语句有什么用呢？SQL Server为什么要以这种方式来修改你的语句呢？这些新增的语句添加到你的文本中是为了确保在你的触发器创建之前自动被删除。第一个语句检查是否该触发器已经存在。如果该文件已经自动存在，则该语句会自动地删除它。

你可以使用SQL Enterprise Manager为每一个表创建三个触发器。在你已经保存了触发器之后，在将来你可以使用Manager Triggers对话框对该触发器进行修改。如果没有SQL Enterprise Manager,这并不是很容易完成的事情。