在Oracle中向視圖中插入資料的方法

來源:互聯網
上載者:User

插入視圖的條件:
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表能夠查詢到該表或者視圖是否可更新。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.