2013-12-13 3 views
-1

Я запустил этот запрос, чтобы обновить временную таблицу CTE_Companies, и обновил исходную таблицу Companies. То, что я должен теперь делать :(Я обновил временную таблицу и обновил исходную таблицу MSSQL Server

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 
+3

получить последнюю копию ... –

ответ

3

Обычным стол-выражение не является временной таблицы. Это больше похоже на вложенный запрос на одной или нескольких таблиц. При выборе из одной таблицы, то вы будете обновлять это таблица.

Это дизайн и очень полезно, так как вы можете изменить Update/Delete сделать Select легко увидеть, что вы собираетесь изменить или удалить. Таким образом, вы должны включать в себя Where состояние в CTE.

0

Вы не можете обновлять табличные выражения без базовые таблицы. Используйте временные таблицы.

0
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 
Смежные вопросы