在定义了我的PK和FK之后,可以在SQL Server 2005中更改varchar
约束吗?在定义了我的PK和FK之后,可以在SQL Server 2005中更改varchar约束吗?
varchar(10) ----> varchar (50)
在定义了我的PK和FK之后,可以在SQL Server 2005中更改varchar
约束吗?在定义了我的PK和FK之后,可以在SQL Server 2005中更改varchar约束吗?
varchar(10) ----> varchar (50)
如果有问题的列是一个外键约束的一部分,那么显然不是 - 在约束两边的数据类型必须精确匹配,和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
它运行没有错误。
如果列涉及外键,则需要删除FK约束,更改数据类型,然后重新创建外键。实际上,非常微不足道的,特别是在删除约束之前,使用SSMS将它们编写出来,因为更改数据类型不会影响FK约束的定义;问题只是在约束到位的时候你不能改变数据类型。
如果该列涉及外键,则需要删除FK约束,更改数据类型,然后重新创建外键。实际上,非常微不足道的,特别是如果在删除约束之前,使用SSMS将它们编写出来。 – onedaywhen