gpt4 book ai didi

sql - 在 INSERT 时获取标识列值

转载 作者:行者123 更新时间:2023-12-02 22:22:44 25 4
gpt4 key购买 nike

我正在使用 SQL Server 2008 创建一个过程。

我正在使用以下 sql 语句插入审计表

 insert into  Listuser
(
UserID,
ListID,
AuditCreated
)
select
UserID,
ListID,
GETDATE()
from ListUser where Surname='surname'

我正在使用 scope_identity() 从 listuser 表中获取标识列并将标识列插入另一个日志表

如果select语句包含超过1个值,如何获取两列的标识值并插入到logs表中?

谢谢

最佳答案

如果您需要捕获插入的多个标识值,我会使用 OUTPUT 子句:

DECLARE @TableOfIdentities TABLE (IdentValue INT)

INSERT INTO dbo.Listuser(UserID, ListID, AuditCreated)
OUTPUT Inserted.ID INTO @TableOfIdentities(IdentValue)
SELECT
UserID, ListID, GETDATE()
FROM
dbo.ListUser
WHERE
Surname = 'surname'

这会将所有行插入到您的 ListUser 表中,并将此 INSERT 生成的所有身份输出到 @TableOfIdentities 表变量

Read more about the OUTPUT clause on MSDN

这些值被插入到表变量中,插入后您可以从该表变量中选择它们,并用它们执行您需要执行的操作:

SELECT * FROM @TableOfIdentities

更新:这里表变量的使用只是作为示例 - 当然你也可以将数据输出到 SQL Server 中的“普通”表中 - 并且还可以输出多个值对于每个插入的行,如果您需要的话 - 这样您就可以拥有类似的内容:

INSERT INTO dbo.Listuser(UserID, ListID, AuditCreated) 
OUTPUT Inserted.ID, Inserted.UserID, Inserted.SurName, GETDATE()
INTO AuditTable(IdentValue, UserID, Surname, InsertDate)
SELECT
UserID, ListID, GETDATE()
FROM
dbo.ListUser
WHERE
Surname = 'surname'

关于sql - 在 INSERT 时获取标识列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com