【发布时间】:2012-04-27 10:19:23
【问题描述】:
我有两张表,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]
您对如何解决这个问题有任何想法吗?谢谢 -
【问题讨论】:
-
Field_1不是主键。您应该通过视觉对象将其设为主键,或者将Table_1的脚本更改为[Field_1] [tinyint] PRIMARY KEY, -
嗨 Lieven,很抱歉我忘记在我的示例表上添加主键。无论如何,我已经更新了我的表,现在定义了主键。但我仍然遇到同样的错误。
-
为了让 SQL Server 能够创建外键,必须确保给定外键只能返回 一个 记录。由于您在多个字段上都有一个主键,因此无法保证
Field_1将是唯一的。如果您无法更改主键,您所能做的就是在Table_1.Field_1上添加一个唯一索引。如果唯一索引也不可能,则无法创建外键。
标签: sql-server-2005 foreign-keys primary-key composite-primary-key