2

我的 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)
)

现在我想用下面的命令在 table2 上建立一个外键:

ALTER TABLE TABLE2  
ADD CONSTRAINT TABLE2_FK 
FOREIGN KEY (t1) REFERENCES TABLE1 (field1) 
  ON DELETE CASCADE ON UPDATE CASCADE

SQL Server 响应外键 in与 inTable2field1Table1长度不同。

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

谢谢您的回答。

4

1 回答 1

3

不,这是不可能的。从MSDN页面上CREATE TABLE,其中包括有关外键的部分:

表级 FOR​​EIGN KEY 约束的 REFERENCES 子句必须具有与约束列列表中的列数相同的引用列数。每个引用列的数据类型也必须与列列表中的对应列相同。

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

于 2013-05-29T02:14:10.407 回答