加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 删除未命名的约束

发布时间:2020-12-12 08:53:43 所属栏目:MsSql教程 来源:网络整理
导读:作为一个菜鸟,我创建了一些没有明确名称的外键. 然后我创建了SQL生成的疯狂名字,如FK__Machines__IdArt__760D22A7.猜测它们将在不同的服务器上以不同的名称生成. 有没有什么好的功能来删除未命名的FK约束作为参数传递表和相关的字段? 解决方法 没有内置的过
作为一个菜鸟,我创建了一些没有明确名称的外键.

然后我创建了SQL生成的疯狂名字,如FK__Machines__IdArt__760D22A7.猜测它们将在不同的服务器上以不同的名称生成.

有没有什么好的功能来删除未命名的FK约束作为参数传递表和相关的字段?

解决方法

没有内置的过程来完成此操作,但是您可以使用information_schema视图中的信息构建自己的过程.

基于表的示例

Create Proc dropFK(@TableName sysname)
as
Begin

Declare @FK sysname
Declare @SQL nvarchar(4000)
Declare crsFK cursor for

select tu.Constraint_Name from 
information_schema.constraint_table_usage TU
LEFT JOIN SYSOBJECTS SO 
ON TU.Constraint_NAME = SO.NAME
where xtype = 'F'
and Table_Name = @TableName
open crsFK
fetch next from crsFK into @FK
While (@@Fetch_Status = 0)
Begin
    Set @SQL = 'Alter table ' + @TableName + ' Drop Constraint ' + @FK
    Print 'Dropping ' + @FK
    exec sp_executesql  @SQL
    fetch next from crsFK into @FK
End
Close crsFK
Deallocate crsFK
End

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读