我有一個SQL Server 2000數據庫中。我需要運行下面的光標來觸發單個記錄上的觸發器(觸發器一次只能操作一條記錄)。問題與SQL Server 2000遊標未擷取NEXT
DECLARE @REC as bigint
DECLARE coil1_cursor CURSOR FOR
SELECT Rec# FROM coil1 WHERE Timestamp BETWEEN '2011-05-10 06:00:00' AND '2011-05-10 07:00:00'
OPEN coil1_cursor
FETCH NEXT FROM coil1_cursor INTO @REC
WHILE (@@FETCH_STATUS=0)
BEGIN
Print @Rec
UPDATE coil1 SET ShiftLength=Null WHERE Rec#[email protected]
FETCH NEXT FROM coil1_cursor INTO @REC
END
CLOSE coil1_cursor
DEALLOCATE coil1_cursor
如果我註釋掉UPDATE行,我會按照預期從Rec#字段獲得序列號。如果我取消註釋UPDATE行,批處理進入無限循環。當我停止批處理時,它只顯示更新它所到達的第一條記錄。這就像FETCH NEXT卡住了。任何想法爲什麼?
,只有在一個時間上的一個記錄操作的觸發需要重寫。 –
您是否可以修復觸發器,以便在所有記錄「從插入」操作?如果是這樣,只需使用UPDATE SET COIL1 ShiftLength = NULL WHERE [時間戳] '之間2011-05-10 6時00分00秒' 與 '2011-05-10 7點○○分00秒'。我認爲你正試圖針對手頭的問題實施錯誤的解決方案。 – HardCode
我曾經在一個觸發刪除光標和只有4條記錄插入接管45分鐘不到一分鐘去。在觸發器中使用遊標是非常糟糕的做法。 – HLGEM