如果我要選擇尚未處理表中的所有記錄,然後更新這些記錄來反映,他們已被處理,我會做到以下幾點:T-SQL交易並鎖定表
SELECT * FROM [dbo].[MyTable] WHERE [flag] IS NULL;
UPDATE [dbo].[MyTable] SET [flag] = 1 WHERE [flag] IS NULL;
如何確保UPDATE僅對剛剛選擇的記錄起作用,即,防止任何可能添加了[flag] = NULL且在我的SELECT之後但在另一個進程的UPDATE之前添加的記錄的UPDATE?我可以在交易中包裝這兩個陳述嗎?我必須在桌子上放一把鎖嗎?
SQL Server的最早版本支持'OUTPUT'子句? – 2009-12-23 07:38:57
SQL Server 2005,這應該是一個公平的假設(幾乎)在2010年... – gbn 2009-12-23 07:40:26
..並給出OP也使用SSIS也基於其他問題。 – gbn 2009-12-23 07:41:19