在定义了我的PK和FK之后,我可以在SQL Server 2005中更改varchar约束吗?

时间:2011-09-22 07:02:55

标签: sql database sql-server-2005 foreign-keys

在我定义了我的PK和FK之后,我可以在SQL Server 2005中更改varchar约束吗?

varchar(10) ----> varchar (50) 

2 个答案:

答案 0 :(得分: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 :(得分:1)

如果列涉及外键,则需要删除FK约束,更改数据类型,然后重新创建外键。实际上,非常简单,尤其是在删除约束之前,使用SSMS编写脚本,因为更改数据类型不会影响FK约束的定义;问题只是在约束到位时无法更改数据类型。