程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle中向視圖中插入數據

Oracle中向視圖中插入數據

日期:2017/1/14 17:22:23      編輯:關於Oracle數據庫

插入視圖的條件: 

1.假如視圖是基於一個基礎表產生的,那麼這就稱為非連接視圖,所有的非連接視圖都是可以更新的,也就是說可以在該視圖上進行,INSERT,UPDATE,DELETE的操作. 

2.假如是連接視圖,那就要遵守基本更新准則了.現在我只對INSERT准則做一下說明:在INSERT語句中不能顯式或隱式的引用到任何非碼保留基礎表中的字段,假如在定義視圖中使用了WITH CHECK OPTION子句,那就不能對視圖執行INSERT操作. 

注:碼保留表,非碼保留表的解釋: 

在DEPT中,DEPT_NO是主碼,EMP中,EMP_NO是主碼 

然後建立連接視圖: 

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_NO仍然充當主碼,所以EMP為碼保留表,而DEPT中的DEPT_NO就不是主碼了,所以為非碼保留表.   多張表關聯後需要向視圖插入數據,建議使用替代觸發器 create trigger [觸發器名]

on [視圖名]
instead of insert
as
begin

--聲明變量;

--從inserted表中查出所有列的數據,分別賦給聲明好的變量;

--用上面的數據向第一張表插入數據

--用上面的數據向第二張表插入數據

end 此外通過user_updatable_columns表能夠查詢到該表或者視圖是否可更新。 Trackback: http://tb.blog.csdn.net/TrackBack.ASPx?PostId=1490248

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved