Sql server SQL Server 2008-创建联接表

Sql server SQL Server 2008-创建联接表,sql-server,join,create-table,Sql Server,Join,Create Table,我在创建一个简单的连接表(关联表等)时遇到了问题,不管您的风格如何 这些是测试表,所以没有太多内容 第一张桌子是 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, ClusterNa

我在创建一个简单的连接表(关联表等)时遇到了问题,不管您的风格如何

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

第一张桌子是

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)
然而,我不断地得到一个错误

Msg 1776,第16级,第0状态,第1行 引用的表“dbo.CareerField”中没有与外键“FK\u CareerField\u Cluster\u CareerField”中的引用列列表匹配的主键或候选键。 Msg 1750,第16级,第0状态,第1行 无法创建约束。请参阅前面的错误

我尝试将这两个字段设置为主键,但在创建键时不允许选择单独的表-我无法选择CareerField Did引用CareerField表,然后选择ClusterID引用Cluster表


我在MySQL上没有遇到过这个问题,而且我是SQL Server新手。非常感谢您的帮助。

对于您的每个表
CareerField
Cluster
,请确保您有一个通过
约束
指令指定的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
    )
) 

对于每个表
CareerField
Cluster
,确保通过
约束指令指定了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
    )
) 

你需要为被引用的表指定主键。你需要为被引用的表指定主键。当我用头撞桌子后,我会诅咒我的名字好几个小时。我真不敢相信我错过了。谢谢!:)当我的头撞在桌子上之后,我会诅咒我的名字好几个小时。我真不敢相信我错过了。谢谢!:)