我试图测试给定的默认约束是否存在.我不想使用sysobjects表,而是使用更标准的信息_模式.
我以前用它来判断表和主键约束,但我在任何地方都看不到默认约束.
他们不在吗?(我使用的是MS SQL Server 2000).
编辑:我想知道约束的名称.
我试图测试给定的默认约束是否存在.我不想使用sysobjects表,而是使用更标准的信息_模式.
我以前用它来判断表和主键约束,但我在任何地方都看不到默认约束.
他们不在吗?(我使用的是MS SQL Server 2000).
编辑:我想知道约束的名称.
据我所知,默认值约束不是ISO标准的一部分,因此它们不会出现在信息模式中.信息模式似乎是此类任务的最佳 Select ,因为它是跨平台的,但如果信息不可用,则应使用对象目录视图(sys.*),而不是SQL Server 2005及更高版本中不推荐的系统表视图.
以下内容与@user186476的答案基本相同.它返回给定列的默认值约束的名称.(对于非SQL Server用户,您需要默认的名称才能删除它,如果您不自己命名默认约束,SQL Server会创建一些疯狂的名称,如"DF_TableN_column_95AFE4B5".为了便于将来更改模式,请始终显式命名您的约束!)
-- returns name of a column's default value constraint
SELECT
default_constraints.name
FROM
sys.all_columns
INNER JOIN
sys.tables
ON all_columns.object_id = tables.object_id
INNER JOIN
sys.schemas
ON tables.schema_id = schemas.schema_id
INNER JOIN
sys.default_constraints
ON all_columns.default_object_id = default_constraints.object_id
WHERE
schemas.name = 'dbo'
AND tables.name = 'tablename'
AND all_columns.name = 'columnname'