触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。Microsoft? SQL Server 2000 自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件;然而,不能直接对表中的数据进行更改。
inserted和deleted表主要用于触发器中:
·扩展表间引用完整性
·在以视图为基础的基表中插入或更新数据
·检查错误并基于错误采取行动
找到数据修改前后表状态的差异,并基于此差异采取行动。
Deleted表用于存储DELETE和UPDATE语句所影响的行的复本。在执行DELETE或UPDATE语句时,行从触发器表中删除,并传输到deleted表中。Deleted表和触发器表通常没有相同的行。
Inserted表用于存储INSERT和UPDATE语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到inserted表和触发器表中。Inserted表中的行是触发器表中新行的副本。
更新事务类似于在删除之后执行插入;首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中。
在设置触发器条件时,应当为引发触发器的操作恰当使用 inserted 和 deleted 表。虽然在测试 INSERT 时引用 deleted 表或在测试 DELETE 时引用 inserted 表不会引起任何错误,但是在这种情形下这些触发器测试表中不会包含任何行。
说明:如果触发器操作取决于一个数据修改所影响的行数,应该为多行数据修改(基于 SELECT 语句的 INSERT、DELETE 或 UPDATE)使用测试(如检查 @@ROWCOUNT),然后采取相应的对策。
SQL Server? 2000 不允许 AFTER 触发器引用 inserted 和 deleted 表中的 text、ntext 或 image 列;然而,允许 INSTEAD OF 触发器引用这些列。有关更多信息,请参见 CREATE TRIGGER。
在 INSTEAD OF 触发器中使用 inserted 和 deleted 表
传递到在表上定义的 INSTEAD OF 触发器的 inserted 和 deleted 表遵从与传递到 AFTER 触发器的 inserted 和 deleted 表相同的规则。inserted 和 deleted 表的格式与在其上定义 INSTEAD OF 触发器的表的格式相同。inserted 和 deleted 表中的每一列都直接映射到基表中的列。
有关引用带 INSTEAD OF 触发器的表的 INSERT 或 UPDATE 语句何时必须提供列值的规则与表没有 INSTEAD OF 触发器时相同:
不能为计算列或具有 timestamp 数据类型的列指定值。
不能为具有 IDENTITY 属性的列指定值,除非该列的 IDENTITY_INSERT 为 ON。当 IDENTITY_INSERT 为 ON 时,INSERT 语句必须提供一个值。
INSERT 语句必须为所有无 DEFAULT 约束的 NOT NULL 列提供值。
对于除计算列、标识列或 timestamp 列以外的任何列,任何允许空值的列或具有 DEFAULT 定义的 NOT NULL 列的值都是可选的。
当INSERT、UPDATE 或 DELETE 语句引用具有 INSTEAD OF 触发器的视图时,数据库引擎将调用该触发器,而不是对任何表采取任何直接操作。即使为视图生成的 inserted 和 deleted 表中的信息格式与基表中的数据格式不同,该触发器在生成执行基表中的请求操作所需的任何语句时,仍必须使用 inserted 和 deleted 表中的信息。
传递到在视图上定义的 INSTEAD OF 触发器的 inserted 和 deleted 表格式与为该视图定义的 SELECT 语句的选择列表相匹配。例如:
CREATE VIEW EmployeeNames (EmployeeID, LName, FName)
AS
SELECT EmployeeID, LastName, FirstName
FROM Northwind.dbo.Employees
视图的结果集有三列:一个 int 列和两个 nvarchar 列。传递到在视图上定义的 INSTEAD OF 触发器的 inserted 和 deleted 表也具有名为 EmployeeID 的 int 列、名为 LName 的 nvarchar 列和名为 FName 的 nvarchar 列。
视图的选择列表还包含不直接映射到单个基表列的表达式。一些视图表达式(如常量调用或函数调用)可能不引用任何列,这类表达式会被忽略。复杂的表达式会引用多列,但在 inserted 和 deleted 表中,每个插入的行仅有一个值。如果视图中的简单表达式引用具有复杂表达式的计算列,则这些简单表达式也有同样的问题。视图上的 INSTEAD OF 触发器必须处理这些类型的表达式。有关更多信息,请参见视图上 INSTEAD OF 触发器中的表达式和计算列。
顺便说一下,当对某张表建立触发器后,分3种情况讨论
1.插入操作(Insert)
Inserted表有数据,Deleted表无数据
2.删除操作(Delete)
Inserted表无数据,Deleted表有数据
3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)
相关推荐
SQL Inserted和deleted详解
SQL Inserted和deleted详解
sqlserver触发器的使用以及inserted和deleted详解
触发器是在对表进行插入、更新或删除操作时自动执行的特殊存储过程。触发器通常用于强制业务规则,触发器是一种高级约束,可以定义比CHECK约束更为复杂的约束:可以执行复杂的SQL语句(if/while/case),可以引用其他表中的列。触发器定义在特定的表上,与表相关,自动触发执行,不能直接调用,是一个事务(可回滚)。
骁龙X Elite笔记本重装Windows 11 Arm64系统完整指南与避坑手册
UEFI安全启动和Arm64架构是理解现代计算设备系统部署的基础。UEFI取代传统BIOS,提供了更安全的启动环境和模块化固件接口,而Arm64架构则以其高能效特性,在移动和新兴PC领域日益重要。其技术价值在于为设备带来更快的启动速度、更强的安全防护以及更优的功耗表现。在应用场景上,这直接关系到搭载高通骁龙X Elite等Arm处理器的笔记本电脑的系统安装与维护。对于这类设备,重装系统远非插入通用安装盘那么简单,核心挑战在于必须使用专为Arm64编译的Windows镜像,并需提前集成芯片组、网络等硬件的专属
SQL server触发器 inserted表和deleted表用法
inserted表和deleted表用于存放对表中数据行的修改信息,他们是触发器执行时自动创建的,放在内存中,是临时表。当触发器工作完成,它们也被删除。它们是只读表,不能向它们写入内容。 inserted表:用来存储INSERT和UPDATE语句所影响的行的副本。意思就是在inserted表中临时保存了被插入或被更新后的记录行。在执行 INSERT 或UPDATE 语句时,新加行被同时添加到ins...
汽车诊断之UDS入门-0x19 0x0A服务
0x19 0x0A解析
基于CAT的VBM和SBM计算学习笔记(二)感兴趣区(ROI)&全脑体积(TIV)
本文介绍了用cat12运算VBM前,如何抓取ROI信息;运算VBM后,如何转化ROI文件和提取全脑体积,为之后的统计分析做好准备。t=N7T8基于CAT的VBM和SBM计算学习笔记(一)VBMhttps://mp.youkuaiyun.com/mp_blog/creation/editor/140665644。
inserted与deleted表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。Microsoft® SQL Server 2000 自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件;然而,不能直接对表中的数据进行更改。 inserted 和 deleted 表主要用于触发器中: 扩展表间引用完整性。 在以视图为基础的基
【故障处理】- ORA-01722
在执行升级脚本@?/rdbms/admin/catupgrd.sql时报错ora-01722。
sqlserver触发器案例 insertd
说明:当系统做insert插入操作的时候,更新插入进来的立账日期,信用日期, 销售发票没有主键PK,有FK外键,这里就不能通过反查id来获取刚刚插入的xxid 1.反查id方法: select @@identity; select ident_current(tablename); select SCOPE_IDENTITY(); 三种区别如下: @@IDENTITY 得到的是跨域最新id ...
从零实现高精度手势检测:OpenCV+MediaPipe模型移植实战(2)(附c++完整代码)
上篇已经介绍了手掌检测的方法。本章将在手掌检测的基础上,完成手指关节的检测。
如何使用 Python 爬虫获取猫眼电影数据:电影评分与评论分析
随着互联网的快速发展,越来越多的人开始使用各种在线平台来了解电影信息,猫眼电影作为一个非常流行的在线电影票务平台,提供了详细的电影评分、评论和票房数据。本篇博客将详细介绍如何使用 Python 爬虫技术获取猫眼电影平台上的电影数据,重点关注电影评分和用户评论的爬取,分析其背后的数据处理和反爬虫技术。如果你对数据分析、电影评论分析等话题感兴趣,可以根据本文的示例进一步深入挖掘更多的数据,为决策提供支持,或为电影产业的相关研究提供有价值的分析依据。有些猫眼电影的页面数据是动态加载的,使用。
sqlserver在触发器中执行动态sql用到inserted(deleted)表
这两天公司产品中要加个数据同步用的触发器,oracle版没什么问题,很顺利的写完了。 在写sqlserver版时遇到了麻烦。由于在触发器中要根据inserted(deleted)表的数据,对另一个表进行更新操作,而这个表的某些字段是不固定的,所以需要写成动态sql,利用exec来执行。这时麻烦来了,exec执行时,无法访问到inserted(deleted)表。坏了,这该如何是好?
32、社交媒体大数据中的情感分析与网络欺凌检测
本文探讨了社交媒体大数据在情感分析和网络欺凌检测中的应用。情感分析有助于应对自动化带来的社会变化、促进社会包容和推动环境保护。网络欺凌作为一种严重的在线危害,其检测依赖于数据预处理、特征提取与深度学习模型(如CNN、LSTM)进行分类。文章还总结了大数据在欺诈检测、医疗、制造、交通等领域的广泛应用,并分析了数据存储、处理速度、质量和技术工具等方面的挑战,提出了相应的应对策略。未来,随着技术进步,社交媒体大数据将在更多领域发挥关键作用。
SQL SERVER 行级触发器(准)
SQL SERVER 准行级触发器ⅰDeleted表和Inserted表 SQL SERVER只有表级和服务器级(相当)的触发器,在很多需要使用行级触发器的场合,很多同事都开始怀念使用Oracle的日子。但是事实上,我认为SQL SERVER这样做有它的理由(或难处),甚至于很多时候我会说,我们不需要精细到以行来触发的操作,因为我们往往要做的是处理哪些数据而不是哪条数据。不过如果您真
Debian Buster 软件源失效问题
摘要:基于Debian Buster的ARM64设备因系统版本结束支持(EOL)导致apt update报错404。解决方案包括:1)改用Debian官方存档源(需禁用安全检查);2)升级至受支持的Debian 11/12版本(推荐);3)临时使用第三方镜像源(不推荐)。操作步骤涉及修改sources.list、处理NTP同步问题及清理残留配置。建议优先采用版本升级方案以获得持续安全更新,避免使用过时系统带来的安全隐患。文中提供了完整命令示例和操作记录供参考。
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
存储过程、用户定义函数、触发器和游标
用户定义函数与编程语言中的函数类似,其结构与存储过程类似,但函数必须有一个 RETURN 子句,用于返回函数值。函数说明要指定函数名、结果值的类型、以及参数类型等。SQL Server 2008 支持两类用户定义函数:标量函数和表值函数,标量函数只返回单个数据值,表值函数将返回一个表。表值函数又分为内联表值函数和语句表值函数。[,...n ][AS]BRGINEND删除函数使用 DROP FUNCTION 语句实现,它从当前数据库中删除一个或多个用户定义函数。
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
触发器记录日志变更
USE [MSCRM_MSCRM] GO /****** Object: Trigger [dbo].[T_Sohu_Update_New_personaltaskExtensionBase] Script Date: 03/24/2011 20:26:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
SQL Server触发器实战:基于UPDATE与INSERT实现库存数据自动同步
在数据库系统中,触发器是一种重要的自动化机制,它能在数据发生变更时自动执行预定义的操作。其工作原理类似于条件反射,当绑定的表发生INSERT、UPDATE或DELETE事件时,数据库会立即响应,通过访问inserted和deleted这两个关键临时表来捕获变化前后的数据状态。这一机制的核心技术价值在于将数据一致性的维护逻辑从应用层下沉至数据库层,从而提升系统的可靠性与内聚性。在工程实践中,触发器常被用于实现跨表数据同步、审计日志记录和实时汇总计算等场景。例如,在库存管理系统中,通过创建AFTER UPDAT
SQL Server触发器实战:基于集合操作实现高效数据同步
在数据库系统中,触发器是一种重要的数据库对象,它能在数据发生变更时自动执行预定义的操作,是实现数据一致性与业务规则自动化的核心技术。其原理基于对DML操作事件的监听,通过inserted和deleted两个临时逻辑表捕获变更前后的数据状态。从技术价值看,触发器将业务逻辑内聚于数据库层,减少了应用代码的复杂性,并能在事务内保证操作的原子性。在应用场景上,它广泛用于实时数据同步、审计日志记录、库存联动更新等需要强一致性的场合。本文以订单与库存同步为例,深入解析如何利用AFTER触发器结合MERGE语句,通过基于
一周速学SQL Server(第五天)
一周速学SQL Server(第五天)
SQL SERVER-10-触发器|游标|动态sql
1.触发器 --可以理解为一个特殊的存储过程,在某一个动作执行的时候,自动执行,而不需要人手动执行 --触发器的分类 --1.DML触发器 --insert,delete,update(不支持select) --after触发器,instead of 触发器(相当于其他数据库的before触发器,是一个替代),(不支持before触发器) --2.DDL触发器 --create table,...
SQL server游标
# SQL server游标 update触发器只会被update触发一次,无论更新的记录数是多少,同理Delete触发器也是一样,对于处理集合性的数据,sql往往是同时处理的,没有按照先后顺序,这样相应的触发器就不会一一触发,这时就需要用游标处理CURSOR。ALTER TRIGGER [dbo].[trg_AdminRole_insert_update] ON [dbo].[Admin_rol
触发器、游标(八)
触发器 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执...
sql server触发器的简单使用
sql server触发器用到的两个逻辑表:deleted和inserted分别代表操作所变更的旧记录集和操作所产生的新记录集。其中:执行INSERT操作后deleted逻辑表为空,inserted逻辑表有数据;执行DELETE操作后inserted逻辑表为空,deleted逻辑表有数据;执行UPDATE操作后两个逻辑表都有数据,deleted为旧记录集,inserted为新记录集。以上操作变更几
1万+



被折叠的 条评论
为什么被折叠?



