2009-12-23 92 views
0

在SQL中,只要視圖只從一個表中選擇數據,就可以針對視圖運行插入和更新。但是,刪除似乎並沒有那麼好。任何人都可以幫忙嗎?Sql Server:使用連接對可更新視圖執行刪除

持這種觀點,例如:

CREATE VIEW v_MyUpdatableView 
AS 
    SELECT x.* FROM MyPrimaryTable x 
    LEFT OUTER JOIN AnotherTable y ON y.MyPrimaryTableId = x.Id 

我反對這種觀點跑更新和插入和他們愉快通過給MyPrimaryTable。 但是,如果我運行刪除我收到以下異常:

視圖或函數「v_MyUpdatableView」不可更新,因爲修改會影響多個基表。

回答

1

我只是創建一個存儲過程,將從兩個表中刪除數據。我知道這並不漂亮,但它可以工作或進行邏輯刪除,在那裏你更新一列以「刪除」。

2

引用:

DELETE語句刪除在一個或多個成員表的通過分區視圖數據。該DELETE語句必須堅持這樣的原則:如果存在具有相同的觀點,或任何成員表的自聯接

  • DELETE語句是不允許的。

Data Modification Rules - Creating a Partitioned View