當前位置:首頁 » 編程語言 » sql不能更新視圖的情況
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql不能更新視圖的情況

發布時間: 2022-10-28 09:18:08

1. 什麼視圖允許更新操作,什麼視圖不允許更新操作。 sql

(1)
若視圖是基於多個表使用聯接操作而導出的,那麼對這個視圖執行更新操作時,每次只能影響其中的一個表。
(2)
若視圖導出時包含有分組和聚合操作,則不允許對這個視圖執行更新操作。
(3)
若視圖是從一個表經選擇、投影而導出的,並在視圖中包含了表的主鍵字或某個候選鍵,這類視圖稱為『行列子集視圖』。對這類視圖可執行更新操作。

2. SQL視圖 更新問題

視圖本身是不保存數據的,每次對視圖查詢,會直接連到表上查詢
但是你這個問題,要根據你的視圖語句來做具體判斷的
比如視圖里有where條件,有group by等聚合函數等的話,原表數據變化了,視圖的數據也有可能不變化。
舉個例子吧:
A表
id type name
1 aa 張三
2 bb 李四

如果視圖是:
create view v_tab
as
select * from a where type = 'aa'

那這樣的話,在a表裡如果插入一條type = 『bb』的數據,視圖的數據就不會有變化
不知道這樣描述樓主清楚沒

3. 利用sql語句如何更新視圖

更新視圖有以下三條規則:
(1) 若視圖是基於多個表使用聯接操作而導出的,那麼對這個視圖執行更新操作時,每次只能影響其中的一個表。
(2) 若視圖導出時包含有分組和聚合操作,則不允許對這個視圖執行更新操作。
(3) 若視圖是從一個表經選擇、投影而導出的,並在視圖中包含了表的主鍵字或某個候選鍵,這類視圖稱為『行列子集視圖』。對這類視圖可執行更新操作。

視圖只有滿足下列條件才可更新:
1、select語句在選擇列表中沒有聚合函數,也不包含TOP,GROUP BY,UNION(除非視圖是分區視圖)或DISTINCT子句。聚合函數可以用在FROM子句的子查詢中,只要不修改函數返回的值。
2、select語句的選擇列表中沒有派生列。派生列是由任何非簡單列表達式(使用函數、加法或減法運算符等)所構成的結果集列。
3、select語句中的FROM子句至少引用一個表。select語句不能只包含非表格格式的表達式(即不是從表派生出的表達式)。
4、INSERT,UPDATE和DELETE語句在引用可更新視圖之前,也必須如上述條件指定的那樣滿足某些限制條件。只有當視圖可更新,並且所編寫的UPDATE或INSERT語句只修改視圖的FROM子句引用的一個基表中的數據時,UPDATE和INSERT語句才能引用視圖。
只有當視圖在其FROM子句中只引用一個表時,DELETE語句才能引用可更新的視圖。

4. 什麼視圖允許更新操作,什麼視圖不允許更新操作。 SQL題

(1) 若視圖是基於多個表使用聯接操作而導出的,那麼對這個視圖執行更新操作時,每次只能影響其中的一個表。
(2) 若視圖導出時包含有分組和聚合操作,則不允許對這個視圖執行更新操作。
(3) 若視圖是從一個表經選擇、投影而導出的,並在視圖中包含了表的主鍵字或某個候選鍵,這類視圖稱為『行列子集視圖』。對這類視圖可執行更新操作。

5. 在SQL 里哪些視圖可以更新,哪些不可以更新。(要寫500字的論文)希望提供全面一點的~

視圖一般式可以更新的,但前提是不能有聚合函數或分組等。
在這個前提下:
1:簡單視圖
就是由一個表生成出來的視圖,這種情況你更新她就和更新表一樣
2:二次加工出來的簡單視圖
仍然是一個表出來的視圖,但是視圖中存在通過函數或計算二次加工出來的其他欄位。更新的時候只要不更新這些加工出來的欄位也是可以更新的。
3:組合視圖
通過表之間關聯聯合等出來的復雜視圖。這種視圖更新的時候要注意你所更新的列要來自同一個表,也是可以更新的。
4:靜態視圖
這種視圖等同於表可以直接更新,但是更新的數據盡在視圖中反映出來,不反映到原表
5:其他視圖
通過表函數等其他生成的更為復雜的視圖。一般不可更新

6. sql怎麼創建不可更新的視圖

1L錯誤,如果視圖只是單表組成的,是可以更新的. 但是你的視圖是兩個表得出的,裡面有多表關聯,這種情況是不能更新視圖的. 如果要更新,建議使用觸發器,分別更新單個表,從而達到相同的目的.

7. 在Sql Server 2000 的分區視圖數據量太大導致中無法更新,怎麼辦

主要是長連接操作導致的死鎖問題,多試幾個優化方案試試

8. SQL語言視圖更新

INSERT語句向視圖插入數據,但應該注意的是:插入的數據實際上存放在基表中,而不是視圖中;
updare好象不行,需要用到另一語句(忘了,呵呵)