Sql server 2005 SQL Server-外键引用错误

Sql server 2005 SQL Server-外键引用错误,sql-server-2005,foreign-keys,primary-key,composite-primary-key,Sql Server 2005,Foreign Keys,Primary Key,Composite Primary Key,我有两个表,Table_1有4列(3个主键)和Table_2有2列。当我试图在表2中创建外键约束时,出现以下错误: 以下是我的表格的定义: 表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_Lat

我有两个表,
Table_1
有4列(3个主键)和
Table_2
有2列。当我试图在
表2
中创建外键约束时,出现以下错误:

以下是我的表格的定义:

表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
)
表2

CREATE TABLE [dbo].[Table_2]
(
    [Field_1] [tinyint] NOT NULL,
    [Field_2] [tinyint] NOT NULL
) ON [PRIMARY]

你知道怎么解决这个问题吗?谢谢-

表1的主键是
字段1
字段2
字段3
中的所有三个。为了引用另一个表中的键,您必须引用该键中的所有列-因此您需要将
Field_2
Field_3
添加到
table_2
,并在尝试创建外键约束时包含所有三列


或者,如果
字段_1
本身是
表_1
的键,则通过重新定义主键或仅在
字段_1
上向
表_1
添加
唯一的
约束来声明它。然后,您就可以创建您试图创建的外键。

字段_1
不是主键。您应该通过可视内容将其设置为主键,或者将
表1
的脚本更改为
[Field\u 1][tinyint]主键
,Hi Lieven,很抱歉,我忘了在示例表中添加主键。无论如何,我已经更新了我的表,现在定义了主键。但是我仍然遇到同样的错误。为了让SQL Server能够创建外键,它必须确保对于给定的外键只能返回一条记录。由于在多个字段上有主键,因此不能保证
Field_1
是唯一的。如果您不能更改主键,您所能做的就是在
表\u 1.字段\u 1
上添加唯一索引。如果也无法创建唯一索引,则无法创建外键。添加唯一约束可解决此问题。谢谢Damien!