如果一個視圖的架構有界或沒有,它有什麼區別?什麼是SQL Server中的IsSchemaBound視圖設置?
回答
如果一個視圖是模式綁定的,這意味着底層模式不能改變。它實際上阻止它這樣做。
模式綁定還允許您索引視圖。應用索引時可以看到靜態模式的重要性。
請記住,模式綁定只能發生在數據庫中 - 您不能將模式綁定到另一個數據庫或其他服務器。這完全是出於數據完整性原因 - 您並不總是保證能夠訪問該數據庫或服務器,因此,您無法阻止對該模式進行任何和所有更改。
此外,您不能刪除模式綁定的表。這顯然會弄糟它的模式,因此被阻止。
雖然我一直在說,「模式」,我的意思是表的設計。這包括列及其數據類型。您不能將模式綁定表上的列從int
更改爲bigint
。您也不能將列名從id
更改爲tblID
。這種預防只是爲了維護觀點的完整性。
您不能索引不是模式綁定的視圖。
模式綁定視圖是模式依賴鏈的一部分。
您不能刪除或更改由模式綁定視圖引用的表,但可以在普通視圖上執行此操作(只會引用運行時錯誤)。
The main benefit of SCHEMA BINDING is to avoid any accidental drop or change of an object that is referenced by other objects
有上的int Microsoft® SQL Server ® 2012 T-SQL Fundamentals通過伊茨克奔甘WITH SCHEMABINDING選項很好的解釋,並在Exam 70-461: Querying Microsoft SQL Server 2012由德揚沙爾卡,伊茨克奔甘,和更多的作家。
舉個例子,當你嘗試刪除從使用WITH SCHEMABINDING選項創建的對象的對象或列:
使用WITH SCHEMABINDING選項創建一個簡單的觀點,不是試圖改變它例如:
ALTER TABLE Table DROP COLUMN Column1;
您會收到以下錯誤:
消息5074,級別16,狀態1,行 對象 'SomeObject' 是依賴於列 '列1'。 消息4922,級別16,狀態9,行1 ALTER TABLE DROP COLUMN列1失敗,因爲一個或多個對象訪問此列。
如果您有一個沒有SCHEMABINDING選項的視圖,這個更改將被允許,但是如果您使用刪除的對象或列查詢一個對象,它可能會在運行時導致錯誤。
SCHEMABINDING選項也有一些首選項,因爲它不支持SELECT *語法,所以您必須使用限定名稱(兩個名稱約定)。
希望這會有所幫助
- 1. 什麼是SQL Server 2008視圖中允許的最大列數?
- 2. sql server中視圖的用法是什麼?
- 3. 什麼是SQL Server視圖中列的最大上限數?
- 4. SQL中視圖的用途是什麼?
- 5. 什麼是SQL Server
- 6. 什麼是SQL Server
- 7. 什麼是SQL Server
- 8. 什麼是SQL Server中的.sql文件?
- 9. SQL Server視圖設計
- 10. sql server圖標是什麼意思?
- 11. SQL Server中uniqueidentifier的用法是什麼?
- 12. 什麼是SQL Server中的IDENTITY_INSERT和MERGE?
- 13. 什麼是SQL Server中的Service Broker?
- 14. 什麼是SQL Server中的char/varchar?
- 15. SQL SERVER 2008中的SID是什麼?
- 16. SQL Server中的「現在」是什麼?
- 17. SQL Server系統視圖中的type和xtype有什麼區別?
- 18. 什麼創建此SQL Server視圖中的錯誤?
- 19. WITH VIEW_METADATA選項與SQL Server中的視圖有什麼關係?
- 20. 什麼是SQL Server LineageId?
- 21. 什麼是在SQL Server
- 22. 什麼是sql server management studio
- 23. 什麼是SQL Server模塊?
- 24. 什麼是SQL Server Reporting Services?
- 25. Sql Server活動監視器中的這個過程是什麼?
- 26. 在sql server中保存視頻的最佳方式是什麼?
- 27. 什麼是SQL Server中的SQL Server Profiler NtUsername變量?
- 28. SQL Server視圖
- 29. 在sql server r2中將外鍵設置爲零的查詢應該是什麼?
- 30. 什麼是在SQL Server 2008中設置主鍵的快捷方式?