2011-09-27 80 views
-2

我想在該視圖中創建視圖我想插入記錄或基於特定條件更新記錄,因此我們可以在SQL視圖中插入或更新。我們可以在視圖中插入或更新語句嗎?SQL視圖中的DML語句

+1

您似乎已經忘記提問... –

+0

我的問題是我們可以插入或更新聲明 –

+0

您使用的是什麼RDMS? – mwan

回答

1

簡答:是的。但是有限制。

例如:(來自http://msdn.microsoft.com/en-us/library/ms180800(v=sql.90).aspx截取)

的任何修改,包括UPDATE,INSERT和DELETE語句,必須只從一個基本表中的列。

視圖中正在修改的列必須直接引用表列中的基礎數據。它們不能以任何其他方式導出,例如:

  1. 集合函數(AVG,COUNT,SUM,MIN,MAX,GROUPING,STDEV,STDEVP,VAR和VARP)。 2.計算;該列不能使用其他列的表達式進行計算。使用集合運算符(UNION,UNION ALL,CROSSJOIN,EXCEPT和INTERSECT)形成的列相當於一個計算,並且也不可更新。

被修改的列不能被GROUP BY,HAVING或DISTINCT子句影響。

當指定WITH CHECK OPTION時,TOP不能在視圖的select_statement中的任何位置使用。

的sooo ...如果它是一個相對簡單的insertupdate你想實現的話,那是非常可能的 - 但更復雜的查詢(和視圖),則越難。

如果可以的話,我還會提供一些反對的建議 - 在我看來,它增加了一層不必要的複雜性,並且(作爲必須解開其他使用此過程的查詢的人員),真的很痛苦保持。

+0

「我的問題是我們可以在視圖中插入或更新語句」。正確的答案是否定的!您正在回答有關插入或更新語句是否可以將視圖作爲目標的不同問題。 –

0

不,您不能在視圖中使用插入或更新語句。請參閱文檔爲CREATE VIEW

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ]) ] 
[ WITH <view_attribute> [ ,...n ] ] 
AS select_statement 
[ WITH CHECK OPTION ] [ ; ] 

它強制執行,該定義必須是SELECT聲明。