在Oracle中向視圖中插入數(shù)據(jù)的方法
更新時間:2007年04月02日 00:00:00 作者:
插入視圖的條件:
1.如果視圖是基于一個基礎(chǔ)表產(chǎn)生的,那么這就稱為非連接視圖,所有的非連接視圖都是可以更新的,也就是說可以在該視圖上進(jìn)行,INSERT,UPDATE,DELETE的操作.
2.如果是連接視圖,那就要遵守基本更新準(zhǔn)則了.現(xiàn)在我只對INSERT準(zhǔn)則做一下說明:在INSERT語句中不能顯式或隱式的引用到任何非碼保留基礎(chǔ)表中的字段,如果在定義視圖中使用了WITH CHECK OPTION子句,那就不能對視圖執(zhí)行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仍然充當(dāng)主碼,所以EMP為碼保留表,而DEPT中的DEPT_NO就不是主碼了,所以為非碼保留表.
多張表關(guān)聯(lián)后需要向視圖插入數(shù)據(jù),建議使用替代觸發(fā)器
create trigger [觸發(fā)器名]
on [視圖名]
instead of insert
as
begin
--聲明變量;
--從inserted表中查出所有列的數(shù)據(jù),分別賦給聲明好的變量;
--用上面的數(shù)據(jù)向第一張表插入數(shù)據(jù)
--用上面的數(shù)據(jù)向第二張表插入數(shù)據(jù)
end
此外通過user_updatable_columns表能夠查詢到該表或者視圖是否可更新。
1.如果視圖是基于一個基礎(chǔ)表產(chǎn)生的,那么這就稱為非連接視圖,所有的非連接視圖都是可以更新的,也就是說可以在該視圖上進(jìn)行,INSERT,UPDATE,DELETE的操作.
2.如果是連接視圖,那就要遵守基本更新準(zhǔn)則了.現(xiàn)在我只對INSERT準(zhǔn)則做一下說明:在INSERT語句中不能顯式或隱式的引用到任何非碼保留基礎(chǔ)表中的字段,如果在定義視圖中使用了WITH CHECK OPTION子句,那就不能對視圖執(zhí)行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仍然充當(dāng)主碼,所以EMP為碼保留表,而DEPT中的DEPT_NO就不是主碼了,所以為非碼保留表.
多張表關(guān)聯(lián)后需要向視圖插入數(shù)據(jù),建議使用替代觸發(fā)器
create trigger [觸發(fā)器名]
on [視圖名]
instead of insert
as
begin
--聲明變量;
--從inserted表中查出所有列的數(shù)據(jù),分別賦給聲明好的變量;
--用上面的數(shù)據(jù)向第一張表插入數(shù)據(jù)
--用上面的數(shù)據(jù)向第二張表插入數(shù)據(jù)
end
此外通過user_updatable_columns表能夠查詢到該表或者視圖是否可更新。
相關(guān)文章
使用jdbc連接Oracle數(shù)據(jù)庫的工具類
這篇文章主要介紹了使用jdbc連接Oracle數(shù)據(jù)庫的工具類,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2007-03-03Oracle row_number() over()解析函數(shù)高效實(shí)現(xiàn)分頁
Oracle row_number() over()解析函數(shù)高效實(shí)現(xiàn)分頁,需要的朋友可以參考下。2011-11-11Oracle下時間轉(zhuǎn)換在幾種語言中的實(shí)現(xiàn)
Oracle下時間轉(zhuǎn)換在幾種語言中的實(shí)現(xiàn)...2007-04-04Oracle 自增(auto increment) 或 標(biāo)識字段的建立方法
SQL SERVER 和 ACCESS 以及 MYSQL 中, 都有一種 自增字段, 通常被用來做 主鍵 或 索引鍵, 但是 ORACLE 中,確并沒有提供這種字段類型(實(shí)際并不是一種字段類型) ,但我們確經(jīng)常需要這個功能。2008-11-11Oracle 函數(shù)大全[字符串函數(shù),數(shù)學(xué)函數(shù),日期函數(shù)]
字符串函數(shù),數(shù)學(xué)函數(shù),日期函數(shù),邏輯運(yùn)算函數(shù),其他函數(shù)2008-09-09ORACLE LATERAL-SQL-INJECTION 個人見解
最近忙啊忙啊的,今天終于有點(diǎn)點(diǎn)時間抽出來看看技術(shù)文章了,最近國外又出了關(guān)于新型ORA注入技術(shù)的PAPER,趕緊測試,主要是出現(xiàn)在SQL語句字符拼 接的時候,DATE類型轉(zhuǎn)換為VARCHAR 以及 NUMBER轉(zhuǎn)換為VARCHAR加入的格式字符出現(xiàn)問題。2008-05-05