此問題之前已被問過......但我似乎無法找到我正在尋找的確切答案......我需要插入一堆記錄並取回插入的標識值...我這樣做: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