我将其作为存储过程的第一部分:
DECLARE @_id as int
if exists(select 1 from JTrack_Visitors WHERE cookie = @cookie)
begin
UPDATE JTrack_Visitors
SET LastSeen = @_now
WHERE cookie = @cookie
end
else
begin
INSERT INTO JTrack_Visitors(Cookie, CreatedOn, LastSeen)
VALUES (@cookie, @_now, @_now)
end
如何将 @_id
设置为正在插入或更新的行的标识?我需要该值稍后在存储过程中使用。
谢谢。
最佳答案
您可以在这两个语句中使用 OUTPUT 子句,在任何一种情况下都会填充表变量,然后从该表变量中检索值。
DECLARE @_id as int;
DECLARE @ID_Table TABLE(ID INT);
IF EXISTS (select 1 from JTrack_Visitors WHERE cookie = @cookie)
BEGIN
UPDATE JTrack_Visitors
SET LastSeen = @_now
OUTPUT inserted.ID INTO @ID_Table(ID)
WHERE cookie = @cookie
END
ELSE
BEGIN
INSERT INTO JTrack_Visitors(Cookie,CreatedOn,LastSeen)
OUTPUT inserted.ID INTO @ID_Table(ID)
VALUES (@cookie,@_now,@_now)
END
SELECT @_id = ID FROM @ID_Table;
关于SQL Server : get the row Identity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25466736/