我的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)
)
现在我想用table命令在table2上构建一个外键:
ALTER TABLE TABLE2
ADD CONSTRAINT TABLE2_FK
FOREIGN KEY (t1) REFERENCES TABLE1 (field1)
ON DELETE CASCADE ON UPDATE CASCADE
SQL Server响应Table2
中的外键与field1
中的Table1
列的长度不同。
是否可以要求SQL Server忽略外键长度的验证?
感谢您的回答。
答案 0 :(得分:3)
不,这是不可能的。在CREATE TABLE
上的MSDN页面上,其中包含有关外键的部分:
表级FOREIGN KEY约束的REFERENCES子句必须 具有与列数相同的参考列数 约束列列表。 每个参考列的数据类型 也必须与列列表中的相应列相同。
当然,您可以创建一个计算列,将VARCHAR(10)
转换为VARCHAR(20)
,然后设置外键。