Sql 在insert之后使用主键更新表列(在一条语句中)
使用update语句,如何直接将列值设置为insert语句的主键?我需要这个作为一个声明 我知道以下是错误的,但它有助于我的想法通过:Sql 在insert之后使用主键更新表列(在一条语句中),sql,sql-server,sql-update,primary-key,sql-insert,Sql,Sql Server,Sql Update,Primary Key,Sql Insert,使用update语句,如何直接将列值设置为insert语句的主键?我需要这个作为一个声明 我知道以下是错误的,但它有助于我的想法通过: update AppNationalities set CountrySelectionID = ( select [INSERTED.pkID] from ( insert into C
update AppNationalities
set CountrySelectionID = (
select [INSERTED.pkID] from
(
insert into CountrySelections
output INSERTED.pkID
values(CountryID, 'test', 0)
)
)
将值放入临时表中:
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
子句。您使用的是哪个数据库?请把它贴上标签。为什么你要在同一个查询中实现这一点?首先执行insert语句,然后使用SQL Server执行update2012@ismetguzelgun我正在对许多表进行广泛的修复,并希望用简单的SQL语句修复所有表。没有存储过程或循环或任何东西。。。只是一个简单的陈述,这里有很多错误的行为。首先,我知道你想一次性实现你的目标,但你的声明中没有where条款。让我们再进一步考虑一下。在CountrySelections表中插入一些值,然后呢?如果没有正确的where子句,APPNigations表如何知道应该更新哪一行?也许AppNations在CountrySelections表中甚至没有您要查找的国家,对吗?