視圖與表具有相似的結構,當向視圖中插入或更新數據時,實際上對視圖所引用的表執行數據的插入和更新。但是通過視圖插入、更新數據和表相比有一些限制,下面通過具體的例子來講述通過視圖插入、更新數據以及其使用的限制。
使用SELECT 語句,可以在視圖和表中查到該條記錄。但是如果執行下面的語句,雖然仍可以成功執行,但只可以在表而不是視圖中查到該條數據。
注意:由於向視圖插入數據實質是向其所引用的基本表中插入數據,所以必須確認那些來包括在視圖列但屬於表的列允許NULL值或有缺省值。
若要執行INSERT 語句,則在同一個語句只能對屬於同一個表的列執行操作。所以,若向視圖au_title 中插入一行數據,只能分別執行以下語句:
insert into au_title (author_au_id, au_lname, au_fname, contract)
values ('234-34-4611','John','Smith', 1)
insert into au_title (title_au_id, title_id, au_ord, royaltyper)
values ('234-34-4611','BU1111',1,50)
通過視圖對數據進行更新與刪除時需要注意到兩個問題:
執行UPDATE DELETE 時,所刪除與更新的數據,必須包含在視圖結果集中;
如果視圖引用多個表時,無法用DELETE 命令刪除數據,若使用UPDATE 則應與INSERT 操作一樣,被更新的列必須屬於同一個表。