在我定义了我的PK和FK之后,我可以在SQL Server 2005中更改varchar
约束吗?
varchar(10) ----> varchar (50)
答案 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约束的定义;问题只是在约束到位时无法更改数据类型。