Sql server 在表之间设置外键时是否可以忽略varchar长度?
我的SQL Server 2008中有两个表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) )
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)
,然后设置外键。否,该列必须具有相同的属性:数据类型、长度等。另请注意: