2011-11-07 70 views
0

我想获取给定表的默认约束信息。我写了这样的东西:获取默认约束信息

SELECT c.name , 
     col.name 
FROM Rem.sys.default_constraints c 
     INNER JOIN Rem.sys.columns col ON col.default_object_id = c.object_id 
     INNER JOIN Rem.sys.objects o ON o.object_id = c.parent_object_id 
     INNER JOIN Rem.sys.schemas s ON s.schema_id = o.schema_id  
WHERE s.name = 'dbo' 
     AND o.name = 'Desk_Hist' 

但它不会返回我的默认值。所以我尝试了一种不同的方式,查询是:

SELECT * 
       FROM Rem.information_schema.columns columns 
       WHERE columns.table_catalog = 'Rem' 
         AND columns.table_schema = 'dbo' 
         AND columns.table_name = 'Desk_Hist' 
         AND COLUMN_DEFAULT IS NOT NULL 

但它没有返回任何内容。

任何人都可以帮助我吗?

回答

0

默认值为列“定义”,尽量不跑哪里查询:

SELECT c.name , 
     col.name, 
     c.definition 
FROM Rem.sys.default_constraints c 
     INNER JOIN Rem.sys.columns col ON col.default_object_id = c.object_id 
     INNER JOIN Rem.sys.objects o ON o.object_id = c.parent_object_id 
     INNER JOIN Rem.sys.schemas s ON s.schema_id = o.schema_id 
+0

面包车c.definition返回我空 – peter

+0

检查权限:HTTP ://msdn.microsoft.com/en-us/library/ms191507.aspx –

0

您的第一个查询应该可以正常工作,但您只能从约束表(c.name)中包含约束名称,而不包含其他任何内容。

尝试包括c.definition在选择列表