Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Sql server 在表之间设置外键时是否可以忽略varchar长度?_Sql Server_Sql Server 2008_Foreign Keys - Fatal编程技术网

Sql server 在表之间设置外键时是否可以忽略varchar长度?

Sql server 在表之间设置外键时是否可以忽略varchar长度?,sql-server,sql-server-2008,foreign-keys,Sql Server,Sql Server 2008,Foreign Keys,我的SQL Server 2008中有两个表 CREATE TABLE TABLE1 ( field1 varchar(20) not null, field2 int, CONSTRAINT PK_TABLE1 PRIMARY KEY (field1) ) CREATE TABLE TABLE2 ( Id int, t1 varchar(10) not null t2 ntext CONSTRAINT PK_TABLE2 PRIMARY KEY (Id) )

我的SQL Server 2008中有两个表

CREATE TABLE TABLE1 (
  field1 varchar(20) not null,
  field2 int,
  CONSTRAINT PK_TABLE1 PRIMARY KEY (field1)
)

CREATE TABLE TABLE2 (
  Id int,
  t1 varchar(10) not null
  t2 ntext
    CONSTRAINT PK_TABLE2 PRIMARY KEY (Id)
)
现在我想用下面的命令在表2上构建一个外键:

ALTER TABLE TABLE2  
ADD CONSTRAINT TABLE2_FK 
FOREIGN KEY (t1) REFERENCES TABLE1 (field1) 
  ON DELETE CASCADE ON UPDATE CASCADE
SQL Server响应说
表2中的外键与
表1中的
字段1
列长度不同

是否可以要求SQL Server忽略外键长度的验证


谢谢你的回答。

不,不可能。从
创建表
的页面,其中包括关于外键的部分:

表级外键约束的REFERENCES子句必须 具有与中的列数相同的引用列数 约束列列表每个参考列的数据类型 还必须与列列表中的相应列相同。

当然,您可以创建一个计算列,将
VARCHAR(10)
强制转换为
VARCHAR(20)
,然后设置外键。

否,该列必须具有相同的属性:数据类型、长度等。另请注意: