gpt4 book ai didi

sql - 获取更新行

转载 作者:行者123 更新时间:2023-12-03 22:56:32 24 4
gpt4 key购买 nike

我有一个更新一条记录的查询,而且只有一条记录。有没有办法在插入时在同一查询中更新 Id,例如 Select ScopeIdentity。

UPDATE Task
SET MyTime = GetDate(), MyUserId = @userid
FROM (select top 1 table where SomeStuff)

Select Lastrow that just got updated.

最佳答案

根据您在做什么,您可能需要使用 OUTPUT 的表语法。 .一种可能性是指定一个临时表/表变量。

DECLARE @T TABLE
(
MyID INT NOT NULL
)

UPDATE Task
SET MyTime = GetDate(), MyUserId = @userid
OUTPUT INSERTED.MyID INTO @T
FROM (/* your FROM clause here */) Task

gbn 在我之前得到了一个编辑,基本上和上面说的一样。我想补充一点,另一种方法是先获取 ID,然后按 ID 更新。此外,TOP 1 应该几乎总是与 ORDER BY 一起使用。 .
-- You may need to clean up the error handling. I just wanted
-- to put something simple in to remind that it is necessary.
DECLARE @userid INT; SET @userid = /* e.g., */ 1234
BEGIN TRANSACTION
IF @@ERROR <> 0 RETURN
DECLARE @TaskID INT
SET @TaskID = (SELECT TOP 1 TaskID FROM Task WITH (UPDLOCK) ORDER BY /* e.g., */ TaskID) -- TaskID should be the PK of MyTable. Must be unique.
IF @@ERROR <> 0 BEGIN ROLLBACK TRANSACTION RETURN END
UPDATE Task
SET MyTime = GETDATE(), MyUserId = @userid
WHERE TaskID = @TaskID
COMMIT TRANSACTION

关于sql - 获取更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1367018/

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