之前有人问过这个问题......但我似乎无法找到我正在寻找的确切答案......我需要插入一堆记录并取回插入的身份值......我正在做这:
INSERT MyTable(col1, ....)
OUTPUT inserted.IdentityColumn
SELECT p.i.value('@XmlAttribute', 'nvarchar(128)') FROM @myXml.nodes('/root/i') AS p(i)
这工作正常...
输入带有可更新订阅的 SQL 事务复制,它将触发器放在订阅者的复制表上。
OUTPUT 在这种情况下不再起作用...
所以,我现在正在这样做......但我对此有一种不好的感觉,我认为我已经打开了并发问题的大门(尽管我并不积极)。
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
DECLARE @currentIdentity bigint
SET @currentIdentity = SELECT IDENT_CURRENT('MyTable') + 1
...
SELECT IdentityColumn FROM MyTable WHERE IdentityColumn <= IDENT_CURRENT('MyTable') AND IdentityColumn >= @currentIdentity
建议?这也很糟糕,因为该方法不适用于生成的唯一标识符。