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

基础问题,如何用SQL修改一个表的主键、外键和惟一性约束
如题,谢谢了

------解决方案--------------------
删除了再建
------解决方案--------------------
要不就是屏蔽约束:
alter table tablename nocheck constraint constraintname

------解决方案--------------------
即然是修改,就应该知道原来的.
------解决方案--------------------
删除了再建!
------解决方案--------------------
如果删除默认值,并且知道默认值约束的名称,可以直接执行

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 收入


------解决方案--------------------
不懂,学习来了,帮顶吧,问题解决了吗? 你能给我一分就不错了,谢谢!
------解决方案--------------------
例:
create table pk_test
(
id int,
num int ,
column1 varchar(10)
constraint pk_pk_test primary key (id)
)

调整主键
declare @pk_name varchar(255)
select @pk_name= name from sysobjects where parent_obj =OBJECT_ID( 'pk_test ')
and xtype = 'PK '
alter table pk_test drop constraint @pk_name --删除
alter table pk_test constraint pk_pk_test primary key (id) --重新创建



------解决方案--------------------
楼上的少了个add:呵呵
alter table pk_test add constraint pk_pk_test primary key (id) --重新创建
------解决方案--------------------
sp_helpindex tbname 可以知道表的所有索引
drop index tablename.indexname
create index indexname on tablename(fleidname,...)
------解决方案--------------------
楼主在联机帮助里输入
alter table 查找
有语法和列子
------解决方案--------------------
alter table
------解决方案--------------------
查帮助,看constraint语法