SQL Server 2005提供了两种创建触发器的方法:采用企业管理器创建和采用SQL语句创建。下面分别介绍这两种方法。
1.使用企业管理器创建触发器
使用企业管理器创建触发器的步骤如下:
1)启动“企业管理器”,依次展开“服务器组”→“服务器”→“数据库”。
2)单击“表”文件夹,使用鼠标右键单击将在其上创建触发器的表,在弹出的快捷菜单中选择“所有任务”菜单项,如图2-103所示。
图2-103 创建触发器的菜单项
3)然后单击“管理触发器”命令,出现如图2-104所示的“触发器属性”界面。
图2-104 “触发器属性”界面
4)在“名称”下拉列表框中,选择“新建”。
5)在“文本”框中输入触发器的文本。
6)若要检查语法,单击“检查语法”按钮。
7)单击“确定”按钮,则触发器创建完成。
2.使用SQL语句创建触发器
SQL Server提供了创建触发器的SQL语句CREATE TRIGGER。
例2-90 采用SQL语句为成绩表创建一个触发器yyy,要求在更新成绩表中的记录时显示表中有多少条记录被更新,如图2-105所示。
图2-105 采用SQL语句创建触发器
这里用到了一个系统变量@@ROWCOUNT,该变量存储的是执行一条SQL语句后所影响的记录数。
参数说明如下。
●name:赋予新触发器的名称。它必须和任何作用于同一表的触发器不同。
●BEFORE|AFTER:决定该函数是在事件之前还是之后调用。
●event:INSERT、DELETE或UPDATE三者之一。它声明击发触发器的事件。多个事件可以用OR连接。
●table:触发器作用的表名称。
●FOR EACH ROW|FOR EACH STATEMENT:这些选项声明触发器过程是否为触发器事件影响的每个行触发一次,还是只为每条SQL语句触发一次。如果都没有声明,则默认为FOR EACH STATEMENT。(www.xing528.com)
●func:一个用户提供的函数,它声明为不接受参数并且返回trigger类型。
●arguments:一个可选的用逗号分隔的参数列表,它将在触发器执行的时候提供给函数。
3.触发器的工作原理
每个触发器都有两张特殊的表:inserted表和deleted表,这两张表有以下特点:
●这两张表是逻辑表,由数据库管理,用户不能对它们进行修改。
●这两张表存储在内存中,而不是存储在数据库中。
●这两张表的结构与被该触发器作用的表有相同的结构。
●当触发器完成时这两张表会自动删除。
●两张表中保存的数据是因用户操作而被影响到的原数据或新数据。
●这两张表是只读表。
(1)inserted表的功能
如果某张表定义了插入操作的触发器,则所有对该表的插入操作,除了向该表中插入数据外,还要将一个副本放到inserted表中。可以通过例题来显示inserted表中的数据。
例2-91 显示inserted表中的数据,如图2-106所示。
图2-106 显示inserted表中的数据
(2)deleted表的功能
如果某张表定义了删除操作的触发器,若对该表进行了删除操作,则所有被删除的记录都存储在deleted表中,这样做的目的是:一旦触发器遇到了强迫它终止的语句被执行时,那些被删除的记录可以从deleted表中恢复。可以通过例题来显示deleted表中的数据。
例2-92 显示deleted表中的数据,如图2-107所示。
图2-107 显示deleted表中的数据
(3)UPDATE工作实质
更新操作是一个复合操作,它可以看成是两步:第一步是将需要更新的记录删除,第二步是将新值插入到表中。因此对一个定义了更新操作触发器的表来说,deleted表和inserted表都会产生。更新操作触发器的执行可以通过以下例题来演示。
例2-93 显示deleted表和inserted表中的数据,如图2-108所示。
图2-108 UPDATE触发器产生的两张表演示
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。