Sql 在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语句,如何直接将列值设置为insert语句的主键?我需要这个作为一个声明

我知道以下是错误的,但它有助于我的想法通过:

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表中甚至没有您要查找的国家,对吗?