是去掉默认值属性吗??试试declare @name varchar(20)
select @name=b.name from syscolumns a,sysobjects b where a.id=object_id(N'表名') and b.id=a.cdefault and a.name='字段名' and b.name like 'DF%'
exec('Alter table 表名 drop constraint '+@name)

解决方案 »

  1.   

    alter table table1
    alter column ss varchar(20) default 'test' null
      

  2.   

    DEFAULT是指定列默认值的关键字。DEFAULT 定义可用于为表中现有行的新列提供值。DEFAULT 定义不能添加到具有 timestamp 数据类型、IDENTITY 属性、现有 DEFAULT 定义或绑定默认值的列。如果列已有默认值,必须除去旧默认值后才能添加新默认值。为同 SQL Server 先前版本保持兼容性,向 DEFAULT 赋予约束名是可能的。---必须除去旧默认值后才能添加新默认值---
      

  3.   

    我的是这样写的,不知道为什么有时候好用,有时候不好用
    declare @name varchar(20)select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('BGS_JSCZ') and b.id=a.cdefault and a.name='F_FSDW' and b.name like 'DF%'if @name is NULL
    begin
      alter table BGS_JSCZ add default 'cc' for F_FSDW
    end
    else
    begin
      exec('alter table BGS_JSCZ drop constraint '+@name)   ALTER TABLE BGS_JSCZ ALTER COLUMN F_FSDW varchar(20) not null
      exec('alter  table  BGS_JSCZ  add  constraint  '+@name+'  default  ''ddddddddd''  for  F_FSDW')end
    有时候会出错,错误信息如下
    服务器: 消息 3728,级别 16,状态 1,行 1
    'DF__BGS_JSCZ__F_FSDW' 不是约束。
    服务器: 消息 3727,级别 16,状态 1,行 1
    未能除去约束。请参阅前面的错误信息。
      

  4.   

    试了一下午,终于知道问题在哪了。我给你的例子中,@name 的长度有问题,改长点,就没问题了。
      

  5.   

    试试declare @name varchar(50)select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('BGS_JSCZ') and b.id=a.cdefault and a.name='F_FSDW' and b.name like 'DF%'if @name is NULL
    begin
      alter table BGS_JSCZ add default 'cc' for F_FSDW
    end
    else
    begin
      exec('alter table BGS_JSCZ drop constraint '+@name)   ALTER TABLE BGS_JSCZ ALTER COLUMN F_FSDW varchar(20) not null
      exec('alter  table  BGS_JSCZ  add  constraint  '+@name+'  default  ''ddddddddd''  for  F_FSDW')end