2012-11-14 122 views
0

我在我的表中的列其中有一個默認值約束「DF_DOC_DMA_PLACE_1_dma_id」SQL默認值約束INFORMATION_SCHEMA

我想丟棄列,但首先我需要丟棄的約束。問題是這個表駐留在許多數據庫中,並且在其中一些約束中不存在。如何首先檢查約束是否存在,然後刪除它?

我知道INFORMATION_SCHEMA中的視圖,但我無法找到具有此約束的視圖?你能告訴我默認值約束所在的位置嗎?由於

+1

順便說一句,只是一個提示:information_schema是sql服務器有的ANSI視圖,如果你正在使用ms sql server,那麼最好使用sys。視圖,它們是僅限於sql-server的視圖,並且在msdn上有詳細記錄) – fnurglewitz

回答

2

請使用以下查詢找到一個每個表的默認約束。

SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint, 
SCHEMA_NAME(schema_id) AS SchemaName, 
OBJECT_NAME(parent_object_id) AS TableName, 
type_desc AS ConstraintType 
FROM sys.objects 
WHERE type_desc = 'DEFAULT_CONSTRAINT' 
1

嘗試基於你會發現這個東西是什麼...

select t.name as 'table', c.[name] as 'column' ,dc.[name],dc.[definition] 
from sys.tables as t 
join sys.columns as c on (c.[object_id] = t.[object_id]) 
join sys.default_constraints as dc on (dc.[object_id] = c.[default_object_id]) 
+0

有沒有辦法列出使用上述列的任何存儲過程? –