我運行了這個查詢來更新臨時表CTE_Companies
並更新了原來的Companies
表。我現在應該怎麼辦:(我更新了臨時表,它更新了原始表MSSQL服務器
with CTE_Companies
(ZIP)
As
(
Select ZIP from Companies
)
Update CTE_Companies
set CTE_Companies.ZIP= '0'+CTE_Companies.ZIP
where len(CTE_Companies.ZIP) = 4
我運行了這個查詢來更新臨時表CTE_Companies
並更新了原來的Companies
表。我現在應該怎麼辦:(我更新了臨時表,它更新了原始表MSSQL服務器
with CTE_Companies
(ZIP)
As
(
Select ZIP from Companies
)
Update CTE_Companies
set CTE_Companies.ZIP= '0'+CTE_Companies.ZIP
where len(CTE_Companies.ZIP) = 4
共表表達式不是一個臨時表。它更像一個或多個表的子查詢。如果你從一個表中選擇,那麼你會及時更新表。
這是由設計非常有用,因爲你可以改變Update
/Delete
做Select
容易看到你要更改或刪除。所以,你應該包括在CTE
的Where
條件是什麼。
無法更新表格表達式基表。 使用臨時表。
BEGIN TRAN
WITH CTE_Companies
(ZIP)
As
(
Select ZIP from Companies
)
Update CTE_Companies
set CTE_Companies.ZIP= SUBSTRING (1, CTE_Companies.ZIP, LEN(CTE_Companies.ZIP) - 1)
where
len(CTE_Companies.ZIP) = 5
and CTE_Companies.ZIP LIKE '0%'
-- check if your data is ok and then change the next line to COMMIT TRAN
ROLLBACK TRAN
獲取最後一次備份... –