”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何仅从SQL Server更新触发器中有效地检索修改的字段?

如何仅从SQL Server更新触发器中有效地检索修改的字段?

发布于2025-03-22
浏览:767

How to Efficiently Retrieve Only Modified Fields from an SQL Server Update Trigger?
仅获取SQL Server Update trigger

介绍

在这种情况下,我们的目的是在SQL Server Database上执行更新trigger时仅包含修改的列值。此信息对于数据复制目的至关重要。

方法

选项1:利用Dynamic SQL(声明方法)

选项2:不进行分散和加入(非确定方法)

,更有效的解决方案是对插入和已删除的表格,创建一个具有唯一键键(contield contield field)的字段(five)(contrace)名称(contive)(contecue),则可以更有效地解决此方法。 By joining these two tables, it is possible to identify any rows where FieldValue has changed, giving us the modified values.

Example

Consider the following code:

CREATE TRIGGER TriggerName ON dbo.Sample_Table FOR DELETE, INSERT, UPDATE AS 开始 设置nocount; - 删除了未分明 使用DELETED_UNPVT为( 选择ContactID,FieldName,FieldValue 从(选择ContactID,Forename,姓氏,Extn,电子邮件,从已删除的年龄)p undivot(inforname,foreName,姓氏,extn,email,age)in deleted_unpvt in fieldvalue ), - 插入未分明 inserted_unpvt as( 选择ContactID,FieldName,FieldValue 从(选择ContactID,Forename,姓氏,Extn,电子邮件,插入年龄)p undivot(in inserted_unpvt ) - 加入他们并确定更改 插入sample_table_changes(contactID,fieldname,fieldvaluewas,fieldvalueis) 选择cocecce(d.contactid,i.contactid)contactid, cocece(d.fieldname,i.fieldname)fieldname, D.FieldValue作为FieldValuewas, I.FieldValue作为fieldValueis 来自DELETED_UNPVT d 完整的外部加入inserted_unpvt i 在d.contactid上 d.fieldvalue i.FieldValue 或(D.FieldValue不是零,而I.FieldValue为null) 或(d。fieldvalue为null,而i.fieldValue并非零); - 使用sample_table_changes的内容进行复制 结尾 GO

这种非决定性方法可以有效地处理更改,删除和插入,而无需使用复杂的动态SQL或面对Bitfield算术杂项溢出问题。只要使用附加的GUID列用于识别,它也不会受到天然主键的更改的影响。
最新教程 更多>
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-03-26
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-03-26
  • 最大的组合与位,大于零
    最大的组合与位,大于零
    2275。最大的组合与位和大于零 [2 [2 [2 例如,对于nums = [1,5,3],位于位,等于1&5&3 = 1。 ,位且为7。 您有一系列积极的整数候选者。评估每个候选数字的每个的的。每种组合中的每个数字都只能在中使用。 比0 cantidates = [16,17,71,62,1...
    编程 发布于2025-03-26
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-03-26
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-03-26
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-03-26
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-03-26
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-03-26
  • 如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    在java 通过Java通过Java运行命令命令可能很具有挑战性。尽管您可能会找到打开命令提示符的代码段,但他们通常缺乏更改目录并执行其他命令的能力。 solution:使用Java使用Java,使用processBuilder。这种方法允许您:启动一个过程,然后将其标准错误重定向到其标准输出。...
    编程 发布于2025-03-26
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    编程 发布于2025-03-26
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-03-26
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,可以更快地搜索这些前缀。了解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-03-26
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-03-26
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-03-26
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-03-26

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3