0

単純な結合テーブル(あなたのフレーバーが何であれ、連想テーブルなど)の作成に問題があります。

これらはテストテーブルであるため、それほど多くはありません。

最初のテーブルは

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

2番目のテーブルは

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

多対多の関係を作成するための3番目のテーブル(結合テーブル)は

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

次を使用して、この3番目のテーブルに外部キーを設定しようとしています。

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でこの問題は発生しておらず、SQLServerは初めてです。どんな助けでも大歓迎です。

4

1 に答える 1

3

CareerFieldテーブルとのそれぞれについて、ディレクティブClusterを介して指定された PK があることを確認します。CONSTRAINT

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 に答える