sqlserver 是不是不能直接alert column 已经是主键的字段长度?

sqlserver 是不是不能直接alert column 
已经是主键的字段长度?

作者: iwhp   发布时间: 2011-06-13

是的,可能引起外键冲突。

作者: zy112429   发布时间: 2011-06-13

是的 先取消主键 再修改

作者: fredrickhu   发布时间: 2011-06-13

可以修改的呀,如果修改不了就取消主键,然后修改后再设为主键。
SQL code


--删除主键  
alter table 你的表 drop constraint 主键名(如:PK_XXX)  
--增加主键 
alter table 你的表 add constraint 主键名 primary key (列名)
ALTER TABLE 你的表 ADD Constraint PK_你的表 Primary key(列名)
   
--修改字段类型 
ALTER TABLE 你的表 ALTER COLUMN 列名 你的类型 [not null]

--设置字段为“不允许空值”或曰设置“列设置为非空列” 
ALTER TABLE 你的表 ALTER COLUMN 列名   列类型 not null
如:alter table aa alter column id int not null

作者: maco_wang   发布时间: 2011-06-13

先取消主键 再修改,但注意修改后的长度应大于修改前的长度,
否则对原主键数据有影响

作者: cd731107   发布时间: 2011-06-13

SQL code

--查主键名字
exec sp_helpconstraint 表名 
--删除主键
alter talbe 表名 drop constraint (复制上面的结果你要修改的那列的主键名)
--最好把另一个表的外键也给取消了.或是那参照表是 级联修改,级联删除的..这样就不用改了
alter talbe 表名 alter column 列名 你的类型和长度 not null
--然后在加主键   
alter table 表名 add constraint primary key(列名)

作者: public0011   发布时间: 2011-06-13