Sql server SQL Server-如何通过触发器仅更新表的插入行?

Sql server SQL Server-如何通过触发器仅更新表的插入行?,sql-server,triggers,Sql Server,Triggers,问题是我已经通过在表中插入一个新行的过程在表中插入了一个AFTER INSERT触发器,我想做的是通过触发器只更新这个新插入的行,有什么方法可以做到这一点吗?是的 你试过阅读文档吗?我是说,至少一次 它告诉您触发器有一个虚拟表(插入),其中包含它处理的所有行(实际上可能不止一行,插入可以覆盖不止一行),然后您可以对此使用标准SQL(即在实际表中查找更新的行,然后更新它们) 你的问题是第1章中一个简单标准教程的教科书示例 一个小googlefu——“tsql触发器更新插入表” 项目1:,名为“使用

问题是我已经通过在表中插入一个新行的过程在表中插入了一个AFTER INSERT触发器,我想做的是通过触发器只更新这个新插入的行,有什么方法可以做到这一点吗?

是的

你试过阅读文档吗?我是说,至少一次

它告诉您触发器有一个虚拟表(插入),其中包含它处理的所有行(实际上可能不止一行,插入可以覆盖不止一行),然后您可以对此使用标准SQL(即在实际表中查找更新的行,然后更新它们)

你的问题是第1章中一个简单标准教程的教科书示例

一个小googlefu——“tsql触发器更新插入表”

项目1:,名为“使用插入和删除的表”

你也可以在这里使用搜索而不是询问


伟大答案的可能副本!除了我的话,当您更新行(值)时,SQLServer的工作流程是首先删除原始行(值),将它们放在名为
“DELETED”
的虚拟表中,然后将新行(值)放在
“INSERTED”
(另一个虚拟表)中。在事务提交之前,不会对磁盘进行永久性修改。但是,如果我的列值没有使该行唯一,SQL中是否有某种信息会告诉我该行已插入。@这称为“设计错误”。所有行都应该有一个主键,该主键根据定义是唯一的。实际上,我要更新的行的列就是主键。@实际上,它甚至比设计错误还要糟糕-它是一个总体设计簇F****。根据关系模型的定义,主键是不允许更改的。不间断电源。