我有两个表,Table_1
有4列(3个主键)和Table_2
有2列。当我尝试在Table_2
中创建外键约束时,我收到此错误:
以下是我的表格的定义:
TABLE_1
CREATE TABLE [dbo].[Table_1]
(
[Field_1] [tinyint] NOT NULL,
[Field_2] [tinyint] NOT NULL,
[Field_3] [tinyint] NOT NULL,
[Field_4] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[Field_1] ASC,
[Field_2] ASC,
[Field_3] ASC
)
TABLE_2
CREATE TABLE [dbo].[Table_2]
(
[Field_1] [tinyint] NOT NULL,
[Field_2] [tinyint] NOT NULL
) ON [PRIMARY]
你对如何解决这个问题有任何想法吗?谢谢 -
答案 0 :(得分:2)
Table_1
的主键是所有三个 Field_1
,Field_2
和Field_3
。要引用另一个表中的键,您必须引用该键中列的所有 - 因此您需要将Field_2
和Field_3
添加到{{1尝试创建外键约束时包含所有三列。
或者,如果Table_2
本身是Field_1
的键,则通过重新定义主键或仅在{Table_1
上添加UNIQUE
约束来声明它。 {1}}到Field_1
。然后,您就可以创建正在尝试的外键。