0

DB に外部キーを作成するのに少し問題があります。これは、私のテーブルがどのように見えるかを言い換えたモデルです。

ノート

 * (PK) NOTE_ID   BIGINT
 *      TITLE     VARCHAR(200)
 *      DATE      DATETIME
 *      SERIES_ID BIGINT

シリーズ

 * (PK) SERIES_ID BIGINT
 *      TITLE     VARCHAR(200)
 *      DESCR     VARCHAR(1000)

NOTESERIESbyの間に「has a」関係を作成しようとしていますSERIES_ID。2 つのテーブル間に外部キーを設定するSERIES_IDことで解決できると思いましたが、作成しようとすると次のエラーが発生します。

エラー: 参照テーブル 'dbo.SERIES' には、外部キー 'FK_SERIES _NOTE 'の参照列リストと一致する主キーまたは候補キーがありません。制約を作成できませんでした

セットアップした GoDaddy SQL Server に付属の Web データベース マネージャーを使用しているため、基になるクエリが何を使用しようとしているのか、投稿するのかわかりません。

結局のところ、Note オブジェクトの NHibernate マッピングに Series オブジェクトとの 1 対 1 の関係が含まれるように、関係を作成するのはこれだけです。ただし、外部キーを使用してこれに正しい方法で取り組もうとしているわけではないかもしれません。

私はこれを正しい方法で行っていますか?

編集: テーブルをより単純な例にペアリングしようとして、重要ではないいくつかの列と思われるものを削除しました。ただし、実際にはシリーズ テーブルの複合主キーの一部であるフィールドを残してしまいました。そのため、複合キーの一部だけに外部キーを割り当てようとしていたため、そうすることができませんでした。

最後に、テーブルの構造をもう一度調べたところ、複合キーの他の部分は実際には必要ないことがわかりました。削除した後、外部キーの割り当てがうまく機能するようになりました。

4

1 に答える 1

0

可能であれば、クエリ アナライザーで次のステートメントを実行してみて、結果のエラー メッセージを確認してください (@Damien_The_Unbeliever が正しいと思います)。

ALTER TABLE NOTE ADD CONSTRAINT FK_SERIES_NOTE 
FOREIGN KEY (SERIES_ID) REFERENCES SERIES(SERIES_ID)
--ON DELETE CASCADE
-- uncomment the preceding line if you want a delete on a serie 
-- to automatically delete all notes on this serie

これが役立つことを願っています

于 2012-04-05T16:21:25.363 に答える