2011-09-22 24 views

回答

1

如果有问题的列是一个外键约束的一部分,那么显然不是 - 在约束两边的数据类型必须精确匹配,和ALTER TABLE语句只可以一次影响单个表。

如果这只是表中具有外键约束的另一列,那么是的,它可以被修改。


如果列只是一个主键或唯一约束的一部分,而不是由外键引用,则可以改变。花了我~30秒来写这个:

create table T1 (
    ID varchar(10) not null PRIMARY KEY, 
    Val1 varchar(10) not null UNIQUE 
) 
go 
insert into T1 (ID,Val1) values ('abc','def') 
go 
alter table T1 alter column Val1 varchar(50) not null 
go 
alter table T1 alter column ID varchar(50) not null 

它运行没有错误。

1

如果列涉及外键,则需要删除FK约束,更改数据类型,然后重新创建外键。实际上,非常微不足道的,特别是在删除约束之前,使用SSMS将它们编写出来,因为更改数据类型不会影响FK约束的定义;问题只是在约束到位的时候你不能改变数据类型。

相关问题