我只是不明白爲什麼SQL Server在從表中刪除列時不會出現錯誤,並且該列由View讀取。據我瞭解,SQL Server擁有這些信息,當你從視圖中選擇查詢時,知道哪些列/表被讀取,所以我認爲它不會讓你刪除一個從視圖引用的列,就像它沒有允許您刪除FK引用的列... 必須對此進行解釋,請別人告訴我! 非常感謝。SQL Server在刪除作爲視圖一部分的字段時沒有提示
2
A
回答
4
因爲您必須要求SQL Server執行此跟蹤。該選項被稱爲SCHEMABINDING:
將視圖綁定到基礎表的模式。當指定SCHEMABINDING,則基表或表不能的方式會影響視圖定義
同樣選項改性,也可在用戶定義的函數,但不幸的是不能在存儲過程。
這不是默認設置 - 它可以構造解析其表,以供不同用戶的不同基表(假設用戶有不同的默認模式)
0
您需要刷新視圖的視圖。下面是刷新數據庫中的所有視圖的腳本:
DECLARE @ViewName AS VARCHAR(255)
DECLARE @tblErrorViews TABLE(ViewName VARCHAR(255))
DECLARE listOfView CURSOR FOR
SELECT [Name] FROM sysobjects
WHERE xtype = 'V'
AND uid = SCHEMA_ID('dbo')
OPEN listOfView
FETCH NEXT FROM listOfView into @ViewName
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT FROM listOfView INTO @ViewName
print @ViewName
EXEC sp_refreshview @ViewName
END
CLOSE listOfView
DEALLOCATE listOfView
的你就會知道需要您注意的
+0
這就是如何找出哪些視圖受到更改的影響,而不是防止發生更改影響任何視圖 – 2012-02-03 08:09:38
+0
是的,這是事實。但是如果你知道你已經刪除了一列(我很少這麼做)。然後,您可以運行該腳本,查看是否有任何視圖對該更改產生影響。 – Arion 2012-02-03 08:15:30
相關問題
- 1. 刪除SQL中字段的一部分
- 2. 刪除SQL Server視圖
- 3. SQL刪除字符串的一部分
- 4. Solr在沒有任何數據時刪除分面的字段
- 5. 在SQL Server中沒有獲取對外鍵的分區刪除
- 6. 查找SQL Server中SQL視圖被刪除的人員/時間
- 7. SQL通過刪除一部分來更新字段
- 8. 在MVC中刪除部分視圖
- 9. 如何將默認值作爲SQL Server視圖定義的一部分插入?
- 10. SQL Server:自動在一段時間後刪除記錄?
- 11. SQL Server複製沒有刪除?
- 12. SQL Server xp_delete_file沒有刪除文件
- 13. SQL:在一段時間後刪除字段值
- 14. 刪除文件的一部分提交
- 15. Objective-c當沒有數據顯示時刪除表格視圖
- 16. 從創建一段時間後刪除SQL Server中的列
- 17. 部分視圖作爲字符串+ JsonResult
- 18. SQL Server的批量刪除使用while循環沒有工作
- 19. 刪除在SQL Server
- 20. 在MVC視圖/部分類中顯示日期字段的時間問題。
- 21. MYSQL刪除其中字段不是陣列的一部分
- 22. 認證後沒有從所有的視圖中刪除視圖
- 23. 在SQL Server中使用透視顯示日期作爲一週
- 24. 在SQL Server中停止刪除操作
- 25. 刪除段落沒有文字
- 26. 在SQL Server的名稱字段上做部分匹配
- 27. 擦除子視圖的一部分
- 28. SQL Server,具有刪除與刪除臨時表與變量表
- 29. 當空字段到來時,刪除iPhone中分組表格視圖中的行?
- 30. 按字段分組Drupal視圖有多個選項 - 只顯示一個字段
始終使用SCHEMABINDING其觀點。使生活更輕鬆(儘管有一些小的開發開銷) – gbn 2012-02-03 08:20:15
非常感謝您的回答,那正是我所期待的。是否可以在默認情況下設置此選項,以便每次我在將來創建視圖時都有SCHEMABINDING ON?我無法在SQL Server Management Studio中找到該選項... – molerus 2012-02-03 08:43:31
@molerus - 如果您使用的是某種設計器,我不確定 - 我手動編寫我的查詢(當然,還有,包括我自己的SCHEMABINDING)。如果使用visual studio模板,我相信它們是可編輯的(同樣,我自己也不使用它們) – 2012-02-03 09:06:56