例如alter table Person
    add nl int not null default'0'
    go 
    alter table Person alter column nl drop default
    go
会报错服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'default' 附近有语法错误。如何删去设置了约束的字段啊

解决方案 »

  1.   

    alter table Person
    drop constraint 约束名
      

  2.   

    declare @tablename varchar(100), @columnname varchar(100), @tab varchar(100)
    set @tablename = 'XXX'    --表名
    set @columnname= 'XXXX'    --字段名称declare @defname varchar(100)    --约束名称
    declare @cmd varchar(100)    --构造的SQL语句
    select @defname = name from sysobjects so join sysconstraints sc on so.id = sc.constid where object_name(so.parent_obj) = @tablename 
    and so.xtype = 'd' and sc.colid =(select colid from syscolumns where id = object_id(@tablename) and name = @columnname) 
    select @cmd= 'alter table '+ @tablename+ ' drop constraint '+ @defname if @cmd is null print ' no default constraint to drop'
    exec (@cmd) 
      

  3.   

    想办法if object_id('tb')is not null 
    drop table tb
    go
    create table tb(Id int ,col varchar(10) default 'AA')
    go
    select b.name 
    from syscolumns a,sysobjects b 
    where a.id=object_id('tb')  and b.id=a.cdefault  and b.name like 'DF%'
    /*
    DF__tb__col__051E8AB9
    */