12

我正在使用选择插入表格

INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

说我有一个身份列california_authors。我可以像我最后一次获得@@IDENTITY 一样获得上述特定插入插入的所有IDsingle insertion吗?

我不能使用 select 命令,california_authors因为可能存在以前插入的带有过滤器的记录State = 'CA'

4

1 回答 1

27

您可以使用输出子句。

如果您的身份列被命名为“IdentityCol”,这样的事情将返回您的 ID 作为结果集。

INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

您可以使用 将 id 插入到表中output ... into
这是一个将 id 存储在表变量中的示例。

declare @IDs table (id int)

INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol INTO @IDs
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
于 2012-01-24T06:41:49.823 回答