カラムにデフォルト値を持つテーブルがあります。そのデフォルト値はcolumn_default
カラムのinformation_schema.columns
テーブルに表示されますが、それはsys.default_constraints
ビューには表示されません。SQLデフォルト制約がsys.default_constraintsに表示されない
なぜそうだと言うことができますか?
カラムにデフォルト値を持つテーブルがあります。そのデフォルト値はcolumn_default
カラムのinformation_schema.columns
テーブルに表示されますが、それはsys.default_constraints
ビューには表示されません。SQLデフォルト制約がsys.default_constraintsに表示されない
なぜそうだと言うことができますか?
create default X as Y
のようなものは、それは、bound defaultの一部として、デフォルト値を適用した非推奨の手段が存在するように、デフォルトではINFORMATION_SCHEMA.COLUMNS
に表示されている場合。
より現代的な制約システムの一部ではないため、sys.default_constraints
には表示されません。
デフォルト制約の詳細がsys.default_constraints
に表示されています。しかし、それはそれが属する列を含んでいません。
sys.columns
、sys.objects
、sys.schemas
に参加する必要があります。実際の詳細が表示されます。私は両方のテーブルからデフォルトの制約の詳細を取得するWHERE
句でテーブル名を渡している:このpost
SELECT c.[name], col.[name], c.[definition]
FROM sys.default_constraints c
INNER JOIN sys.columns col ON col.default_object_id = c.object_id
INNER JOIN sys.objects o ON o.object_id = c.parent_object_id
INNER JOIN sys.schemas s ON s.schema_id = o.schema_id
WHERE o.[name] = 'TableName'
GO
SELECT column_name, column_default
FROM information_schema.columns
WHERE Table_name = 'TableName'
AND column_default IS NOT NULL
GO
sys.default_constraints
関連するコードを