đây là một ví dụ về cách SCOPE_IDENTITY () sẽ rỗng nhưng @@ IDENTITY sẽ có giá trị:
FYI, có một lỗi đã biết với SCOPE_IDENTITY (): https:/ /connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=328811
Đặt cược tốt nhất của bạn với các danh tính là sử dụng OUTPUT INTO, nó có thể nắm bắt một tập hợp các ID và không bị lỗi SCOPE_IDENTITY ():
declare @x table (tableID int identity not null primary key, datavalue varchar(10))
declare @y table (tableID int, datavalue varchar(10))
INSERT INTO @x values ('aaaa')
INSERT INTO @x values ('bbbb')
INSERT INTO @x values ('cccc')
INSERT INTO @x values ('dddd')
INSERT INTO @x values ('eeee')
INSERT INTO @x
(datavalue)
OUTPUT INSERTED.tableID, INSERTED.datavalue --<<<<OUTPUT INTO SYNTAX
INTO @y --<<<<OUTPUT INTO SYNTAX
SELECT
'value='+CONVERT(varchar(5),dt.NewValue)
FROM (SELECT id as NewValue from sysobjects where id<20) dt
ORDER BY dt.NewValue
select * from @x
select * from @y