插入后用主键更新表列(在一个语句中)
Posted
技术标签:
【中文标题】插入后用主键更新表列(在一个语句中)【英文标题】:Update table column with primary key after insert (in one statement) 【发布时间】:2020-04-15 07:31:02 【问题描述】:使用更新语句,如何直接将列值设置为插入语句的主键?我需要这个作为一个声明。
我知道以下是错误的,但它有助于我的想法通过:
update AppNationalities
set CountrySelectionID = (
select [INSERTED.pkID] from
(
insert into CountrySelections
output INSERTED.pkID
values(CountryID, 'test', 0)
)
)
【问题讨论】:
您使用的是哪个数据库?请标记它。 你为什么要在同一个查询中实现这一点?先执行insert语句再执行update可能吗? 我使用 SQL Server 2012 @ismetguzelgun 我正在对许多表进行广泛修复,并希望使用简单的 SQL 语句来修复它们。没有存储过程或循环或任何东西......只是一个简单的语句。 这里有很多错误。首先,我知道您想一次性实现目标,但您的声明中没有 where 子句。让我们再想一想。您在 CountrySelections 表中插入一些值,然后呢?如果没有正确的 where 子句,AppNationalities 表如何知道应该更新哪一行?也许 AppNationalities 甚至在 CountrySelections 表中都没有您要查找的国家/地区吗? 【参考方案1】:将值放入临时表中:
declare @ids table (pkID int);
insert into CountrySelections
output INSERTED.pkID into @ids
values (CountryID, 'test', 0);
update AppNationalities
set CountrySelectionID = i.id
from @ids i;
我认为UPDATE
或DELETE
语句的FROM
子句中不允许使用output
子句。
【讨论】:
以上是关于插入后用主键更新表列(在一个语句中)的主要内容,如果未能解决你的问题,请参考以下文章
Sql 从一个表列中选择一个最小值,并在一个 SQL 语句中将结果插入到另一个表列中
标准update语法 单表更新或较简单的语句采用使用此方案更优。