sys.default_constraints
是 SQL Server 的系统视图,它包含了数据库中所有默认约束的信息。默认约束是数据库对象(如表中的列)的约束,它为列定义了一个默认值,当在插入新行时没有为该列提供值时,将使用这个默认值。
sys.default_constraints
视图提供了关于这些默认约束的详细信息,如约束的名称、所属的表、约束的列、默认值等。
以下是在 sys.default_constraints
视图中的内容:
name
: 默认约束的名称。object_id
: 默认约束的对象ID。parent_object_id
: 包含此默认约束的表的对象ID。parent_column_id
: 约束所应用的列的ID。definition
: 约束的默认值或表达式。is_ms_shipped
: 指示是否是由系统生成的约束。is_disabled
: 指示约束是否已被禁用。
示例:首先,我们创建一个新表,并给其中的某些列设置默认值:
CREATE TABLE ExampleTable (
ID INT PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(100) NOT NULL,
Age INT DEFAULT 25,
IsActive BIT DEFAULT 1,
CreatedDate DATETIME DEFAULT GETDATE()
);
现在,假设我们想要查询这个新表的列及其默认值,我们可以用 sys.default_constraints
和其他系统视图:
SELECT
c.name AS column_name,
t.name AS table_name,
dc.definition AS default_value
FROM
sys.columns c
LEFT JOIN
sys.default_constraints dc ON c.default_object_id = dc.object_id
INNER JOIN
sys.tables t ON c.object_id = t.object_id
WHERE
t.name = 'ExampleTable' AND
dc.parent_column_id = c.column_id;
结果: