在不知道名称的情况下删除 SQL 默认约束
在 SQL Server 中,默认约束是一种指定将自动分配的值的方法如果没有提供其他值,则为列。但是,在某些情况下,默认约束名称未知或输入错误。
挑战
要删除默认约束,请使用 ALTER TABLE DROP CONSTRAINT 语法需要指定约束名称。不幸的是,有关默认约束的信息无法通过 INFORMATION_SCHEMA 表轻松获得。
解决方案
克服此挑战的一种方法是使用动态 SQL 生成命令删除基于架构、表和列名称的约束。下面是一个示例:
declare @schema_name nvarchar(256) declare @table_name nvarchar(256) declare @col_name nvarchar(256) declare @Command nvarchar(1000) set @schema_name = N'MySchema' set @table_name = N'Department' set @col_name = N'ModifiedDate' select @Command = 'ALTER TABLE ' + @schema_name + '.[' + @table_name + '] DROP CONSTRAINT ' + d.name from sys.tables t join sys.default_constraints d on d.parent_object_id = t.object_id join sys.columns c on c.object_id = t.object_id and c.column_id = d.parent_column_id where t.name = @table_name and t.schema_id = schema_id(@schema_name) and c.name = @col_name execute (@Command)
此脚本根据提供的信息动态生成必要的 ALTER TABLE DROP CONSTRAINT 命令并执行它,删除默认约束而不需要其确切名称。
通过利用动态 SQL,此方法允许删除默认约束,而无需先验知识或由于不正确的约束名称而导致的潜在错误。
以上是如何在不知道名称的情况下删除 SQL Server 默认约束?的详细内容。更多信息请关注PHP中文网其他相关文章!