如何生成所有约束脚本

Roc*_*ngh 10 sql sql-server sql-server-2005 sql-server-2008

我有一个要求,我必须更改我的数据库的排序规则,因为我需要删除所有约束并在我的数据库上运行排序规则更改脚本后重新创建它们.我可以知道如何生成数据库的所有约束条件?

gh9*_*gh9 7

SELECT top 1 
    'ALTER TABLE '+ SCHEMA_NAME(schema_id) + '.' + OBJECT_NAME(parent_object_id) + 
    ' ADD CONSTRAINT ' + dc.name + ' DEFAULT(' + definition 
    + ') FOR ' + c.name
FROM sys.default_constraints dc
INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
Run Code Online (Sandbox Code Playgroud)

用于生成所有约束的脚本

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
Run Code Online (Sandbox Code Playgroud)

得到db上的所有约束然后过滤你的表


Mil*_*ric 4

这将为您提供数据库中的所有约束,您可以根据需要对其进行过滤:

SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'
Run Code Online (Sandbox Code Playgroud)

我认为您可能还需要查看任何索引、统计数据等,这些也可能会阻止您删除该列。