使用SQL语句删除带用默认值的列

时间:2021-07-15 01:33:30

在企业管理器中删除字段是方便了些,但对于数据量大的表,往往要等上好久,很考验人的耐性。

使用SQL来操作相对来说比较快滴,但往往有好多问题,比如删除某个字段,使用如下语句:

alter table table_name drop column column_name  

在字段没有默认值的时候可以删除,一旦字段有默认值,就会出现:对象'DF_table_name_column_name' 依赖于 列'column_name'。由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN column_name 失败。错误警报。

此刻怎么办呢,当然首先去掉此列的默认值了。难道没有SQL语句可以实现这个操作么?看下边的语句:

declare @name varchar(20)
select @name = b.name from sysobjects b join syscolumns a on
b.id = a.cdefault where a.id = object_id('table_name') and a.name = 'column_name'
exec('alter table test drop constraint ' + @name)

去掉列的默认值后(其实是去掉列约束),再执行alter table table_name drop column column_name 语句,列被删除了。当然也可以一起执行整个语句。