欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL 删除外键列

程序员文章站 2022-06-24 14:02:05
一 SQL删除列的语句是: 但是,如果某列有约束时,不能直接删除,需要先删除约束,再删除列。如果某个列是外键,在不知道外键约束名称的情况下,那么首先是查找外键约束名称,根据名称删除约束,然后再删除列。 二 如何查找外键约束 上述代码在使用的时候需要给@TableName赋值实际的表名,@Column ......

一 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