日期:2014-05-19  浏览次数:20378 次

修改表问题
我在SQL   SERVER中建立了如下表        
CREATE   TABLE   Student                    
        (Sno       CHAR(9)   PRIMARY   KEY,                        
          Sname     CHAR(20)   UNIQUE,                                  
          Ssex         CHAR(2),
          Sage       SMALLINT,
          Sdept     CHAR(20)
                      );
我想请问用ALTER   TABLE   命令如何去掉Sno的主码约束和Sname的唯一约束?
ALTER   TABLE   Student   PRIMARY   KEY(Sno),总是调试失败.  
谢谢

------解决方案--------------------
http://community.csdn.net/Expert/topic/5417/5417265.xml?temp=.8316919
------解决方案--------------------

如果删除默认值,并且知道默认值约束的名称,可以直接执行

alter table 收支表 drop constraint 约束名

但是,一般情况下,都是系统定义的约束名,用户不知道约束的名称,用下面的语句。

--如果原来有默认值,现在需要更改默认值,执行如下语句:

declare @csname varchar(100)
set @csname= ' '
select @csname=[name] --约束名称
from sysobjects t
where id=(select cdefault from syscolumns where id=object_id(N '收支表 ') and name= '收入 ')
exec( 'alter table 收支表 drop constraint '+@csname)

alter table 收支表 add default(3000) for 收入