此问题之前已被问过......但我似乎无法找到我正在寻找的确切答案......我需要插入一堆记录并取回插入的标识值...我这样做:TSQL获取插入的ID
INSERT MyTable(col1, ....)
OUTPUT inserted.IdentityColumn
SELECT p.i.value('@XmlAttribute', 'nvarchar(128)') FROM @myXml.nodes('/root/i') AS p(i)
这工作得很好......
输入SQL事务复制与更新订阅,这使对用户复制表上的触发器。
输出不再在这种情况下工作...
所以,现在我在做这个......但我有一种不好的预感在我的这个直觉,我觉得我已经打开大门一个并发问题(虽然我不积极)。
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
建议?这也很糟糕,因为该方法不适用于生成的uniqueidentifiers。
为什么您的第一条语句不能用于复制?似乎它是第二个由于ID分区而复制的问题。 – RBarryYoung
如果表上有任何触发器,则不能使用OUTPUT语法。 – Jeff