我创建了一些没有显式名称的外键。
然后我发现SQL生成了疯狂的名称,例如FK__Machines__IdArt__760D22A7。猜猜它们将在不同的服务器上以不同的名称生成。
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