我在列上使用了更新語句,現在我想將其反轉。有沒有辦法解決這個問題?如何撤消更新函數SQL Server?
這是原始數據
Name Score
John 15
John 15
我用這個查詢:
UPDATE T1
SET [score] = [score]+'na'
WHERE (name = ‘john’)
這給了我這樣的:
Name Score
John 15na
John 15na
我可以撤消此並刪除na
?我希望得分是一個浮動。
我在列上使用了更新語句,現在我想將其反轉。有沒有辦法解決這個問題?如何撤消更新函數SQL Server?
這是原始數據
Name Score
John 15
John 15
我用這個查詢:
UPDATE T1
SET [score] = [score]+'na'
WHERE (name = ‘john’)
這給了我這樣的:
Name Score
John 15na
John 15na
我可以撤消此並刪除na
?我希望得分是一個浮動。
撤消通過刪除添加na
:
UPDATE T1
SET [score] = LEFT([score],LEN([score])-2)
where (name = 'john')
@justiceorjustus好點,但AFAICT從字符串中刪除'na'應該使它成爲一個浮點數,即使它包含在VARCHAR字段中。我不確定OP是否真的想將該列設置爲FLOAT類型。如果他這樣做,我會添加一些措施來做到這一點。 –
您可以做的TT。已經提及並手動更新到其原始值或ROLLBACK
。如果IMPLICIT_TRANSACTIONS
設置爲,您可以通過執行ROLLBACK TRANSACTION;
來執行ROLLBACK
。但是,如果EXPLICIT_TRANSACTIONS
設置爲,那麼你需要指定一個BEGIN TRANSACTION
是這樣的...
BEGIN TRANSACTION;
UPDATE T1
SET [score] = [score]+'na'
where (name = ‘john’);
--if unhappy with results..
ROLLBACK TRANSACTION;
上,如果,如果你想
ROLLBACK
不指定每次
BEGIN TRANSACTION
它尚未
或設置IMPLICIT_TRANSACTIONS
。
SET IMPLICIT_TRANSACTIONS ON;
UPDATE T1
SET [score] = [score]+'na'
where (name = ‘john’);
--if unhappy with results..
ROLLBACK TRANSACTION;
你試過'rollback'嗎? –
還沒有,你能舉個例子嗎? – luanstat
我只是假設你知道'SQL'。在每個DBS中,你有'commit'這樣的東西使得數據變化持久化並且回滾,這使得UNDO自從上次提交(一些語句使自動提交)以來的所有變化。 –