1
爲什麼此CTE會給出錯誤消息?無法從CTE中刪除 - MSG 4405
;with del as (
SELECT t1.*
FROM t1
INNER JOIN t2
ON t1.tid = t2.tid
)
DELETE del;
它給人的錯誤信息
Msg 4405, Level 16, State 1, Line 5 View or function 't' is not updatable because the modification affects multiple base tables.
完全相同的語法同樣適用於一個更新,而不是刪除。
編輯:相同的語法工作如果t2不是一個基表,而是一個基於常量的cte基地。
http://sqlfiddle.com/#!6/dcc10/2
錯誤消息是相當不言自明的:你不能從兩個表中刪除。您的更新可能工作,因爲它隻影響其中一個表中的列。 –
@ArronBertrand:但CTE數據只來自1個表 – jmoreno
數據來自一個連接,這可能意味着在結果中存在多於一行,並且t1中具有相同的主鍵。 –