基於單一基礎表建立的視圖稱為非連接視圖,所有非連接視圖均可直接更新,支援 INSERT、UPDATE、DELETE 操作。
需遵循基本更新準則。針對 INSERT 操作:
WITH CHECK OPTION 子句,則完全禁止對視圖執行 INSERT。-- 範例:EMP 與 DEPT 連接視圖 CREATE VIEW emp_dept AS SELECT emp.emp_no, emp.emp_name, emp.dept_no, dept.name FROM emp, dept WHERE emp.dept_no = dept.dept_no;
EMP 表中 EMP_NO 為主鍵,在視圖中仍為主鍵 → EMP 為關鍵保留表DEPT 表中 DEPT_NO 在視圖中不再唯一 → DEPT 為非關鍵保留表因此,INSERT 時不可引用 DEPT 表欄位(如 dept.name)。
當多表關聯需向視圖插入資料,強烈建議使用 INSTEAD OF 觸發器:
CREATE TRIGGER trigger_name
ON view_name
INSTEAD OF INSERT
AS
BEGIN
-- 宣告變數
-- 從 inserted 表查出所有欄位資料,賦值給變數
-- 向第一張基礎表插入資料
-- 向第二張基礎表插入資料
END;
查詢 USER_UPDATABLE_COLUMNS 視圖,即可得知該表或視圖哪些欄位可更新。