SQL中的with check option(轉)


student表:

95001 李勇 男 20 CS 

95002 劉晨 女 21 IS 

95003 王敏 女 18 MA 

95004 張力 男 19 IS 

建立視圖IS_STUDENT顯示“IS”系所有學生的學號、姓名、性別。

create view IS_STUDENT

as

select Sno,Sname,Ssex from Student

where Sdept='IS'

with check option;


用insert語句向視圖中插入元組('95009','王五','男'),查看基本表student表中插入的數據值。

下面是失敗的消息: 消息 550,級別 16,狀態 1,第 1 行

試圖進行的插入或更新已失敗,原因是目標視圖或者目標視圖所跨越的某一視圖指定了 WITH CHECK OPTION,而該操作的一個或多個結果行又不符合 CHECK OPTION 約束。 語句已終止

解答:

with check  option可以這么解釋:通過視圖進行的修改,必須也能通過該視圖看到修改后的結果。

比如你insert,那么加的這條記錄在刷新視圖后必須可以看到; 如果修改,修改完的結果也必須能通過該視圖看到;如果刪除,當然只能刪除視圖里有顯示的記錄。

 

小結:

首先視圖只操作它可以查詢出來的數據,對於它查詢不出的數據,即使基表有,也不可以通過視圖來操作。 

1.對於update,有with check option,要保證update后,數據要被視圖查詢出來

2.對於delete,有無with check option都一樣

3.對於insert,有with check option,要保證insert后,數據要被視圖查詢出來

4.對於沒有where 子句的視圖,使用with check option是多余的

 

 

 

原地址:http://www.cnblogs.com/wangaohui/archive/2012/12/15/2819419.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM