2011-11-07 7 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

デフォルト値が列「の定義」であるあなたの選択リストのc.definition含む

てみてください、どこせずにクエリを実行しようとします。http:

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

があなたの権限を確認Nullを私に返します://msdn.microsoft.com/en-us/library/ms191507.aspx –

0

最初のクエリは機能するはずですが、制約テーブル(c.name)からの制約名のみ、それ以外のものは含まれません。

関連する問題