`
一个猪头
  • 浏览: 6783 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

sql server触发器中自动生成的临时表

阅读更多
sql server触发器中,系统自动会生成两张临时表,分别是deleted 和inserted 它们是逻辑(概念)表。也可理解为是临时表。

为方便理解,可以这么来认为Inserted表和Deleted表的作用:Inserted表就是放新的记录,Delete表就是放旧的记录。并且,它们的表结构与原表是完全相同的。

1。当你插入时,要插入的记录是新的,所以可以在Insert表中找到。

如:table1中本来就有N条记录,但执行 insert into table1 value('1')   那么,在table1的sql server触发器的Inserted表中,有且仅有同样一条记录。
select * from Inserted ,结果为: 1 而不是table1的N+1条记录。

2。当你更新时,要更新的记录是新的,所以可以在Inserted表中找到,被更新的记录是旧的,所以可以在Deleted表中找到。

如:有条记录 1 要改为 2
select * from Deleted 的结果为1select * from Inserted 的结果为2

3。当你删除时,要删除的记录是旧的,所以可以在Deleted表中找到。

如:表中有1,2,3,4 四条记录,删除其中三条,则 select * from deleted 的结果为 1,2,3

当对某张表建立sql server触发器后,分3种情况讨论

1.插入操作(Insert)

Inserted表有数据,Deleted表无数据

2.删除操作(Delete)

Inserted表无数据,Deleted表有数据

3.更新操作(Update)

Inserted表有数据(新数据),Deleted表有数据(旧数据)
分享到:
评论
1 楼 一个猪头 2011-11-08  
DECLARE
    @IsInsert bit,
    @IsUpdate bit,
    @IsDelete bit

IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
    SET @IsInsert = 1
ELSE
    SET @IsInsert = 0

IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
    SET @IsUpdate = 1
ELSE
    SET @IsUpdate = 0

IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
    SET @IsDelete = 1
ELSE
    SET @IsDelete = 0

相关推荐

    SqlServer触发器调用WebService

    `inserted`表是在执行INSERT操作后自动生成的临时表,包含了所有新插入的行。 - **发送HTTP请求**:使用`sp_OACreate`和`sp_OAMethod`存储过程来创建HTTP对象并发送请求。`sp_OACreate`用于创建COM对象,而`sp_...

    sqlserver 触发器学习(实现自动编号)

    在SQL Server中,触发器是一种特殊的存储过程,它在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行,以实现复杂的数据完整性规则或业务逻辑。本篇将深入探讨触发器的基本概念、类型、分类及如何实现...

    sqlserver触发器的使用情况.pdf

    触发器的关键在于两个临时表:Deleted 和 Inserted。Deleted 表示触发事件的表 “旧的一条记录”,Inserted 表示“新的一条记录”。在 Update 过程中,触发器会生成新的记录到 Inserted 表,复制旧的记录到 Deleted ...

    巧妙应用SQL Server触发器.pdf

    SQL Server触发器是一种特殊的数据库对象,它在数据库表中插入、更新或删除操作发生时自动执行。触发器不能被直接调用,而是与特定的数据表紧密相关,并且在满足特定条件时自动触发。触发器的主要功能是自动执行一些...

    管理信息系统中SQL SERVER触发器之妙用.pdf

    触发器是SQL Server数据库管理系统中一种特殊类型的存储过程,它会在满足特定条件时自动触发执行。触发器主要用于强制实现数据完整性、业务规则、以及数据自动化处理,对于数据库管理至关重要,特别是在复杂的管理...

    SQL Server 2000触发器技术.pdf

    这两个表不是存储在数据库中的实际表,而是临时的、由系统在内存中自动维护的逻辑表。deleted表中包含了在delete或update操作中被删除的行的副本,而inserted表则包含了在insert或update操作中插入的新行的副本。 ...

    SQL Server 2000触发器运行机制的逻辑分析.pdf

    而INSTEAD OF触发器在触发时,它作用的数据表实际上还没有发生变动,此时只有deleted表或inserted表发生了数据变化,通过判断这两个临时表中的数据来决定如何用指定的操作来代替原定的数据变动操作。 通过建立一个...

    sql触发器实例加解析

    在SQL Server中,当数据表中的数据发生更改时,系统会自动生成两个临时表:`DELETED` 和 `INSERTED`。这两个表包含了被修改的数据的旧值和新值。 - **DELETED** 表:包含被删除或修改前的数据。 - **INSERTED** 表...

    SQL触发器实例讲解

    - 性能优化技巧,如使用INSTEAD OF触发器代替AFTER触发器以减少循环引用,或利用临时表存储中间结果。 - 避免触发器陷阱的策略,如防止无限递归和不必要的触发器调用。 了解和掌握SQL触发器对于数据库开发者和管理...

    SQLServer高频面试题及答案

    触发器是数据库系统中的一种机制,可以在数据库中自动执行某些操作,如插入、更新、删除等。触发器可以用来维护数据的一致性和完整性。 4. 什么是存储过程? 存储过程是数据库中的一种程序单元,可以实现某些特定...

    SQL Server 触发器实例详解

    这个示例中的触发器会在向'classes'表中插入新记录后,根据插入的'classes'数据生成新的'student'记录。 触发器还涉及两个特殊表,即INSERTED和DELETED表。这两个表在内存中临时创建,分别保存了操作后的新数据...

    SQL触发器在旅行社管理信息系统中的应用.pdf

    触发器是数据库中的一种特殊存储过程,用于在特定数据表中的数据发生变化时自动执行一组SQL语句。它是在数据库中强制实施业务规则和数据完整性控制的重要机制。文档首先介绍了旅行社管理信息系统的基本构成和功能,...

    oracle,sql临时表.pdf

    例如,在SQL Server中,临时表有两种类型:本地临时表(#table)和全局临时表(##table)。本地临时表仅对创建它的会话可见,而全局临时表对所有会话可见,但只有在创建它的会话结束时才会消失。 总的来说,Oracle...

    sql server术语学习表

    **用途**:批量加载数据到SQL Server表中或从表中导出数据。 #### BCP Files (BCP文件) **定义**:`BCP Files`指的是使用BCP工具生成的数据文件。 **用途**:存储要导入或导出的数据。 #### BigInt (BigInt数据...

    基于SQL Server的数据库同步原理研究.pdf

    触发器会在插入、删除和更新操作发生时被触发,并执行相应的逻辑,如将操作记录到临时表中,并处理数据同步事务。 具体到SQL Server数据库同步设计方案中,会利用触发器来记录源表中的数据变更。例如,在插入触发器...

    SQLServer数据库导入Oracle

    8. **触发器和存储过程**:如果SQL Server中有触发器或存储过程,需要在Oracle中创建相应的对象,并可能需要调整以适应Oracle的语法和行为。 9. **索引和约束**:重建索引和外键约束,以保持数据的完整性和查询性能...

Global site tag (gtag.js) - Google Analytics