0

我在创建一个简单的连接表(关联表等,无论你喜欢什么)时遇到问题。

这些是测试表,所以没有太多内容。

第一个表是

CREATE TABLE dbo.CareerField(
CareerFieldID int IDENTITY(1,1) NOT NULL,
CareerFieldName varchar(100) NOT NULL
)

第二张表是

CREATE TABLE dbo.Cluster(
ClusterID int IDENTITY(1,1) NOT NULL,
ClusterName varchar(100) NOT NULL
)

创建多对多关系的第三个表(连接表)是

CREATE TABLE dbo.CareerField_Cluster(
CareerFieldID int NOT NULL,
ClusterID int NOT NULL
)

我正在尝试使用以下方法在第三个表中设置外键

ALTER TABLE dbo.CareerField_Cluster
ADD CONSTRAINT FK_CareerField_Cluster_CareerFieldID
FOREIGN KEY(CareerFieldID) REFERENCES dbo.CareerField(CareerFieldID)

ALTER TABLE dbo.CareerField_Cluster
ADD CONSTRAINT FK_CareerField_Cluster_ClusterID
FOREIGN KEY(ClusterID) REFERENCES dbo.Cluster(ClusterID)

但是,我不断收到错误消息

消息 1776,级别 16,状态 0,行 1 引用表 'dbo.CareerField' 中没有与外键 'FK_CareerField_Cluster_CareerFieldID' 中的引用列列表匹配的主键或候选键。消息 1750,级别 16,状态 0,行 1 无法创建约束。请参阅以前的错误。

我尝试将这两个字段设置为主键,但它不允许我在创建键时选择单独的表 - 我不能选择 CareerFieldID 来引用 CareerField 表,然后选择 ClusterID 来引用集群表。

我没有遇到过 MySQL 的这个问题,而且我是 SQL Server 的新手。任何帮助深表感谢。

4

1 回答 1

3

对于您的每个表CareerFieldCluster,确保您有一个通过CONSTRAINT指令指定的 PK。

CREATE TABLE [dbo].[CareerField]
(
    [CareerFieldID] [int] IDENTITY(1,1) NOT NULL,
    [CareerFieldName] [varchar](100) NOT NULL,
    CONSTRAINT [PK_Career] PRIMARY KEY CLUSTERED 
    (
        [CareerFieldID] ASC
    )
) 
于 2012-05-17T21:14:40.017 回答