SQL 删除外键列

一 sql删除列的语句是: 

alter table tablename drop column columnname  --(其中,tablename为表名,columnname为列名)

但是,如果某列有约束时,不能直接删除,需要先删除约束,再删除列。如果某个列是外键,在不知道外键约束名称的情况下,那么首先是查找外键约束名称,根据名称删除约束,然后再删除列。

二 如何查找外键约束

declare @tablename nvarchar(64) = ''
declare @columnname  nvarchar(32) = ''select c.name from sysconstraints a 
inner join syscolumns b on a.colid=b.colid 
inner join sysobjects c on a.constid=c.id
where a.id=object_id(@tablename) 
and b.name=@columnname

上述代码在使用的时候需要给@tablename赋值实际的表名,@columnname为实际的列名。

三 知道了约束名就可以删除约束了

alter table @tablename drop constraint @constraint_name

 四 将上面的代码合并,于是有下面的代码

declare @tablename nvarchar(64) = ''
declare @columnname  nvarchar(32) = ''
declare @constraint_key sysname
select @constraint_key = c.name from sysconstraints a 
inner join syscolumns b on a.colid=b.colid 
inner join sysobjects c on a.constid=c.id
where a.id=object_id(@tablename) 
and b.name=@columnname
declare @sql nvarchar(512) = n'alter table ' + @tablename + ' drop constraint ' + @constraint_key
execute sys.sp_executesql @sql

 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐