一 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