[英]My Update statement is being processed before a previously stated INSERT INTO
我正在嘗試使用新值更新37k記錄,但在此之前,我試圖輸入“審計追蹤”記錄以記錄先前的值。 我遇到的是Update命令,即使是在INSERT INTO命令之后,INSERT INTO命令的“先前值”也顯示了新值。 似乎先處理了更新命令。
WHILE @iLP <=@cntDeal_SD
BEGIN
-- History Change
SET @PrevSettleDate=(SELECT SettleDate FROM Deal WHERE DealID=@Deal_ID)
INSERT INTO History
(ItemKey,LoginID,TimeStamp,HowChanged,FieldChanged,PreviousValue,NewValue,Comment,Created)
VALUES ('CDeal' + CAST(@Deal_ID AS varchar(10)),1,GETDATE(), 'M','SettleDate', ISNULL(@PrevSettleDate,'NULL'), '3/02/2012', 'TSR5691', 0)
-- Record Change
SET @Deal_ID = (SELECT DealID FROM @tblDeal_SD WHERE Row = @iLP)
UPDATE Deal SET SettleDate = '3/02/2012' WHERE DealID=@Deal_ID
SET @iLP=@iLP + 1
END
[編輯]剛剛意識到我的SET @Deal_ID語句在我的INSERT INTO之后。
雖然我早些時候意識到我需要在UPDATE之前發布我的INSERT INTO,但是我無法移動所有內容都基於的SET語句。
我的錯。
不,問題是你在;
如果將@Deal_ID的更新移到循環的開始,事情應該就可以了。
我會使用update語句的OUTPUT子句。 這將使您可以將舊值保存到表變量中,甚至直接保存到歷史表中。 您可以通過這種方式一次完成所有更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.