2

SQLSever式を作成するときの問題は次のとおりです。

参照テーブル'Room'には、外部キー' FK_Booking_RoomNo__4E298478
'の参照列リストと一致する主キーまたは候補キーがありません。

そして私のプログラムへのいくつかのスナップショット:

CREATE TABLE Booking(
   HotelNo  NVARCHAR(4)     not null,
   GuestNo      SMALLINT,  
   DateFrom DATETIME    not null,
   DateTo       DATETIME,
   RoomNo       SMALLINT    not null,

   PRIMARY KEY (HotelNo,DateFrom,RoomNo), 
   FOREIGN KEY (HotelNo) REFERENCES Hotel(HotelNo),
   FOREIGN KEY (GuestNo) REFERENCES Guest(GuestNo),
   FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo));  <---trouble on this line

CREATE TABLE Room(
   RoomNo       SMALLINT    not null, 
   HotelNo  NVARCHAR(4)     not null, 
   RoomType     NVARCHAR(25),
   Price        DECIMAL(5,2),

   PRIMARY KEY (RoomNo,HotelNo), 
   CONSTRAINT fk_Room FOREIGN KEY (HotelNo) REFERENCES Hotel(HotelNo));

これがホテルのテーブルです

CREATE TABLE Hotel(
   HotelNo  NVARCHAR(4)     not null,
   HotelName    NVARCHAR(25),
   City     NVARCHAR(25),

   PRIMARY KEY (HotelNo) );

この問題を検索しようとしましたが、テーブルRoomに主キーが定義されていない場合に発生する可能性があると表示されますが、上記のように定義されています。

誰かがこの問題で私を助けてくれますか?

前もって感謝します。

4

1 に答える 1

3

複合キーへの参照には、両方の列も含める必要があります。

FOREIGN KEY (RoomNo, HotelNo) REFERENCES Room(RoomNo, HotelNo))
于 2012-10-26T22:34:21.410 に答える