在定义PK';之后,是否可以在SQL Server 2005中更改varchar约束;s和FK';s
在定义了PK和FK之后,我是否可以更改SQL Server 2005中的在定义PK';之后,是否可以在SQL Server 2005中更改varchar约束;s和FK';s,sql,database,sql-server-2005,foreign-keys,Sql,Database,Sql Server 2005,Foreign Keys,在定义了PK和FK之后,我是否可以更改SQL Server 2005中的varchar约束 varchar(10) ----> varchar (50) 如果所讨论的列是外键约束的一部分,那么显然不是-约束两侧的数据类型必须完全匹配,altertable语句一次只能影响一个表 如果这只是表中具有外键约束的另一列,则可以对其进行更改 如果列只是主键或唯一约束的一部分,并且未被外键引用,则可以对其进行更改。我花了约30秒的时间写下: create table T1 ( ID va
varchar
约束
varchar(10) ----> varchar (50)
如果所讨论的列是外键约束的一部分,那么显然不是-约束两侧的数据类型必须完全匹配,
altertable
语句一次只能影响一个表
如果这只是表中具有外键约束的另一列,则可以对其进行更改
如果列只是主键或唯一约束的一部分,并且未被外键引用,则可以对其进行更改。我花了约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约束,更改数据类型,然后重新创建外键。事实上,这非常简单,尤其是在删除约束之前,您使用SSM编写它们的脚本,因为更改数据类型不会影响FK约束的定义;问题在于,当约束处于适当位置时,无法更改数据类型。如果列涉及外键,则需要删除FK约束,更改数据类型,然后重新创建外键。实际上非常简单,尤其是在删除约束之前,您使用SSM编写它们的脚本。