我的是SQL SERVER2008.表中已经存在一个字段:zs字段类型是int,默认值是0现在我用语句修改成DECIMAL(20,3),默认值为0.000--首先删除默认值
DECLARE @rule_name VARCHAR(200)
SELECT @rule_name=name FROM sysobjects
       where id IN (select cdefault from syscolumns,sysobjects where sysobjects.name = 'bzfgd_02' and syscolumns.name = 'zs' and  sysobjects.id = syscolumns.id)
if not @rule_name is null 
    EXEC ('alter table bzfgd_02 drop constraint ' +  @rule_name )
--然后修改字段类型并指定默认值
ALTER TABLE  bzfgd_02 ALTER COLUMN zs DECIMAL(20,3) NOT NULL DEFAULT 0.000 WITH VALUES;结果是最后一句报错:
关键字 'DEFAULT' 附近有语法错误.

解决方案 »

  1.   

    --然后修改字段类型并指定默认值
    ALTER TABLE bzfgd_02 ALTER COLUMN zs DECIMAL(20,3) NOT NULL DEFAULT 0.000 WITH VALUES;写错了 去看看正确的写法 
      

  2.   

    ALTER TABLE bzfgd_02 ALTER COLUMN zs DECIMAL(20,3) NOT NULL DEFAULT 0.000 /**
    WITH VALUES只有在 ADD 列子句中指定了 DEFAULT 的情况下,才能使用 WITH VALUES指定在添加到现有行的新列中存储 DEFAULT constant_expression 中所给定的值。只有在 ADD 列子句中指定了 DEFAULT 的情况下,才能使用 WITH VALUES。如果要添加的列允许空值且指定了 WITH VALUES,那么将在现有行的新列中存储默认值。如果没有指定 WITH VALUES 且列允许空值,那么将在现有行的新列中存储 NULL 值。如果新列不允许空值,那么不论是否指定 WITH VALUES,都将在现有行的新列中存储默认值。
    **/
      

  3.   

    去掉WITH VALUES还是报同样的错误