首页 理论教育 inserted表和deleted表使用方法

inserted表和deleted表使用方法

时间:2023-10-21 理论教育 版权反馈
【摘要】:inserted表和deleted表存储在内存中,而不是存储在数据库中,因此不允许用户直接对其修改。inserted表和deleted表在结构上与该触发器作用的表相同。下面通过3个例子来进一步说明inserted表、deleted表和基本表之间的关系。

inserted表和deleted表使用方法

每个触发器都有两个特殊的表:inserted表和deleted表。这两个表都是逻辑表,并且这两个表是由系统管理的。inserted表和deleted表存储在内存中,而不是存储在数据库中,因此不允许用户直接对其修改。inserted表和deleted表在结构上与该触发器作用的表相同。这两个表是临时表,动态驻留在内存中,当触发器工作完成,这两个表也会被删除。这两个表主要保存因用户操作而被影响到的原数据值或新数据值。另外这两个表是只读的,即用户不能向这两个表中写入内容,但可以在触发器执行过程中引用这两个表中的数据。

inserted表中存储着被INSERT和UPDATE语句影响的新的数据行。执行INSERT或UPDATE语句时,新的数据行被添加到基本表中,同时这些数据行的备份被复制到inserted临时表中。

deleted表用于存储DELETE和UPDATE语句所影响的旧的数据行。在执行DELETE或UPDATE语句时,行从触发器表中删除,并存放到deleted表中。deleted表和触发器表通常没有相同的行。

下面通过3个例子来进一步说明inserted表、deleted表和基本表之间的关系。

1)在“Teaching”数据库的Zy表中添加如下记录。

978-7-111-33494-1-Chapter08-1.jpg

当执行上述INSERT语句后,Zy表和inserted表的数据如图8-1所示。

978-7-111-33494-1-Chapter08-2.jpg

图8-1 INSERT操作中的基本表和inserted表

2)在Zy表中执行下列UPDATE操作。

978-7-111-33494-1-Chapter08-3.jpg

则Zy表、deleted表和inserted表的数据如图8-2所示。

978-7-111-33494-1-Chapter08-4.jpg(www.xing528.com)

图8-2 UPDATE操作中的基本表、deleted表和inserted表

3)在Zy表中执行下列DELETE操作。

978-7-111-33494-1-Chapter08-5.jpg

则Zy表和deleted表的数据如图8-3所示。

978-7-111-33494-1-Chapter08-6.jpg

图8-3 DELETE操作中的基本表和deleted表

通过上面的分析,可以发现进行INSERT操作时,只影响inserted表;进行DELETE操作时,只影响deleted表;进行UPDATE操作时,既影响inserted表,也会影响deleted表。

注意

●上述结果是在触发器中对inserted表和deleted表查询(如SELECT * FROM inserted)的结果。

●inserted和deleted表不能直接被读取,因为这两个表是存在内存中,也就是说是在执行插入、修改和删除操作过程中,这两个表才存在。

●只有在触发器中才能捕获插入、修改或删除的动态事务,所以,inserted和deleted表的读取也只能在触发器中实现。

●因为inserted表和deleted表存在于内存中,仅仅在触发器执行时存在,它们在某一特定时间和某一特定表相关。一旦某个触发器结束执行,在两个表内的数据都会丢失。如果创建一个在这些表内数据的永久存档,需要在触发器内把这些表的数据复制到一个永久的表内。

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

我要反馈