資料庫檢視詳解 (轉)
執行檢視:
保護檢視:
with check option導致檢視where自居不但篩選檢索的資料,還在通過檢視插入和更新資料時進行檢查。即進行雙向限制。
在建立檢視的時候,如果在management stdio設計器中進行建立,如果在屬性視窗中啟用了with schemabinding(繫結到架構)選項。那麼我們在修改表的結構的時候,系統就會提示無法修改,系統就會保護檢視
我們所建立的檢視的程式碼都可以再系統表中找到:儲存在SysComments中
eg:select Text from SysComments
join SysObjects on SysObjects.ID=SysComments.ID
where Name='ViewName'
即可得到ViewName的原始碼
但是如果我們在建立檢視的時候加上了with encryption的話,就無法得到原始碼 ,而是一堆亂碼
不過值得注意的是,如果加了這個限制之後,我們就無法修改這個檢視了。
通過檢視進行更新:
人們經常抱怨,不能通過檢視來更新資料。事實上,除非檢視包含的是簡單的select語句,否則不能通過它來實現資料的更新
下列因素將導致檢視不可更新:
1.只能更新一個表。如果檢視使用了連線,引用檢視的update語句只能跟新其中的一個表
2.針對檢視或基表的instead of觸發器將改變資料修改操作,在這種情況下,將執行instead of觸發器中的程式碼,而不執行提交的資料更新
3.如果試圖包含聚合函式或group by子句,檢視將是不可更新的,因為sql server無法確定應更新那些被彙總的行
4.如果檢視使用自查詢來提供派生表,檢視輸出將不包含該派生表中的任何列。然而可以再用作派生表的子查詢中使用聚合函式
5.如果試圖包含with check option,則insert和update操作必須滿足檢視的where子句指定的條件
6.執行insert或update操作時,指定的列必須在基表中是唯一的。如果兩個表包含名稱相同的列,必須指定列時使用table.column表示法
交叉參考:一種規避檢視不可更新限制的方法是建立一個instead of觸發器,它檢查要更新的資料,並根據這些資料執行合法的update操作
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-672789/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫檢視詳解資料庫
- 【轉】檢視Oracle資料庫阻塞Oracle資料庫
- 資料庫檢視資料庫
- 資料庫-檢視資料庫
- Windows使用Apche並檢視MySQL資料庫(轉)WindowsMySql資料庫
- MySQL資料庫檢視:檢視定義、建立檢視、修改檢視MySql資料庫
- 資料庫無法建立資料庫檢視資料庫
- (轉)檢視sql server 資料庫連線數方法SQLServer資料庫
- 檢視oracle資料庫----sizeOracle資料庫
- 檢視資料庫的版本資料庫
- 資料庫的物化檢視資料庫
- 資料庫檢視的作用資料庫
- 資料庫檢視的使用資料庫
- oracle資料庫 exp/imp命令詳解(轉)Oracle資料庫
- MySQL檢視當前資料庫庫MySql資料庫
- 2.12 資料庫資料字典檢視資料庫
- 用檢視解決資料庫鏈路問題資料庫
- 物化檢視詳解
- oracle檢視詳解Oracle
- Oracle資料庫DBA日常Sql列表及常用檢視(轉)Oracle資料庫SQL
- 什麼是資料庫檢視?資料庫
- 檢視MySQL資料庫的命令MySql資料庫
- 檢視資料庫中的物件資料庫物件
- 檢視資料庫表空間資料庫
- 檢視資料庫中各表資訊資料庫
- openGausspostgreSQL資料庫效能檢視SQL資料庫
- 資料庫健康檢查(轉)資料庫
- oracle資料庫巡檢(轉)Oracle資料庫
- 【轉載】Oracle資料字典檢視Oracle
- calcite物化檢視詳解
- Oracle物化檢視詳解Oracle
- MySQL View(檢視)詳解MySqlView
- ZT 物化檢視詳解
- 2.8.3 資料庫服務的資料字典檢視資料庫
- android 檢視資料庫和shaedpreference資料框架Android資料庫框架
- 檢視資料庫資料檔案的總大小資料庫
- 檢視oracle資料庫真實大小Oracle資料庫
- Oracle 資料庫字典 檢視 基表Oracle資料庫