首页 理论教育 SQLServer2005中创建触发器的方法与示例

SQLServer2005中创建触发器的方法与示例

时间:2023-11-04 理论教育 版权反馈
【摘要】:图2-103 创建触发器的菜单项3)然后单击“管理触发器”命令,出现如图2-104所示的“触发器属性”界面。图2-105 采用SQL语句创建触发器这里用到了一个系统变量@@ROWCOUNT,该变量存储的是执行一条SQL语句后所影响的记录数。它声明击发触发器的事件。图2-108 UPDATE触发器产生的两张表演示

SQLServer2005中创建触发器的方法与示例

SQL Server 2005提供了两种创建触发器的方法:采用企业管理器创建和采用SQL语句创建。下面分别介绍这两种方法。

1.使用企业管理器创建触发器

使用企业管理器创建触发器的步骤如下:

1)启动“企业管理器”,依次展开“服务器组”→“服务器”→“数据库”。

2)单击“表”文件夹,使用鼠标右键单击将在其上创建触发器的表,在弹出的快捷菜单中选择“所有任务”菜单项,如图2-103所示。

978-7-111-36808-3-Chapter02-232.jpg

图2-103 创建触发器的菜单项

3)然后单击“管理触发器”命令,出现如图2-104所示的“触发器属性”界面。

978-7-111-36808-3-Chapter02-233.jpg

图2-104 “触发器属性”界面

4)在“名称”下拉列表框中,选择“新建”。

5)在“文本”框中输入触发器的文本。

6)若要检查语法,单击“检查语法”按钮

7)单击“确定”按钮,则触发器创建完成。

2.使用SQL语句创建触发器

SQL Server提供了创建触发器的SQL语句CREATE TRIGGER。

例2-90 采用SQL语句为成绩表创建一个触发器yyy,要求在更新成绩表中的记录时显示表中有多少条记录被更新,如图2-105所示。

978-7-111-36808-3-Chapter02-234.jpg

图2-105 采用SQL语句创建触发器

这里用到了一个系统变量@@ROWCOUNT,该变量存储的是执行一条SQL语句后所影响的记录数。

978-7-111-36808-3-Chapter02-235.jpg

参数说明如下。

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所示。

978-7-111-36808-3-Chapter02-236.jpg

图2-106 显示inserted表中的数据

(2)deleted表的功能

如果某张表定义了删除操作的触发器,若对该表进行了删除操作,则所有被删除的记录都存储在deleted表中,这样做的目的是:一旦触发器遇到了强迫它终止的语句被执行时,那些被删除的记录可以从deleted表中恢复。可以通过例题来显示deleted表中的数据。

例2-92 显示deleted表中的数据,如图2-107所示。

978-7-111-36808-3-Chapter02-237.jpg

图2-107 显示deleted表中的数据

(3)UPDATE工作实质

更新操作是一个复合操作,它可以看成是两步:第一步是将需要更新的记录删除,第二步是将新值插入到表中。因此对一个定义了更新操作触发器的表来说,deleted表和inserted表都会产生。更新操作触发器的执行可以通过以下例题来演示。

例2-93 显示deleted表和inserted表中的数据,如图2-108所示。

978-7-111-36808-3-Chapter02-238.jpg

图2-108 UPDATE触发器产生的两张表演示

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈