Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在定义PK';之后,是否可以在SQL Server 2005中更改varchar约束;s和FK';s_Sql_Database_Sql Server 2005_Foreign Keys - Fatal编程技术网

在定义PK';之后,是否可以在SQL Server 2005中更改varchar约束;s和FK';s

在定义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

在定义了PK和FK之后,我是否可以更改SQL Server 2005中的
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编写它们的脚本。