首页 > 数据库 > mysql教程 > 如何在不知道名称的情况下删除 SQL Server 默认约束?

如何在不知道名称的情况下删除 SQL Server 默认约束?

Barbara Streisand
发布: 2024-12-30 03:58:09
原创
809 人浏览过

How to Drop SQL Server Default Constraints Without Knowing Their Names?

在不知道名称的情况下删除 SQL 默认约束

背景

SQL Server 允许在列上创建默认约束。然而,在早期版本中,拼写错误常常导致约束名称不一致,例如“DF_SomeTable_ColName”和“DF_SmoeTable_ColName”。当尝试在不知道其精确名称的情况下删除默认约束时,这会带来挑战。

解决方案

要在不知道其名称的情况下有效删除默认约束,可以使用以下方法可以使用:

  1. 动态生成放置命令:利用以下组合sys.tables、sys.default_constraints 和 sys.columns 表中,可以构造表示删除约束的 SQL 命令的动态字符串。该字符串标识要删除的表、列和特定的默认约束。
  2. 执行动态命令:生成删除命令字符串后,可以使用execute (@命令)。此步骤执行命令并删除默认约束。

示例代码

以下代码示例提供了所描述方法的实现:

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

--print @Command

execute (@Command)
登录后复制

通过利用此技术,可以动态删除默认约束,而不管拼写错误引起的名称不一致如何。此方法可确保成功删除约束,而不会因未知约束名称而遇到错误。

以上是如何在不知道名称的情况下删除 SQL Server 默认约束?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板