簡體   English   中英

在SQL Server中設置外鍵時出錯

[英]Error when setting foreign key in SQL Server

我在運行以在MS SQL Server中創建表的以下查詢:

CREATE TABLE menus
(
  menu_id int NOT NULL PRIMARY KEY,
  menu_name char,
  other_details char
)

CREATE TABLE bookings
(
  booking_Id int NOT NULL PRIMARY KEY,
  date_booked DATE,
  date_of_booking DATE,
  other_details char,
  staff_id int FOREIGN KEY REFERENCES staff(staff_id),
  customer_id int FOREIGN KEY REFERENCES customers(customer_id)
)

CREATE TABLE menus_booked
(
  menu_id INT NOT NULL,
  booking_id INT NOT NULL,
  CONSTRAINT PK_menus_booked PRIMARY KEY(menu_id,booking_id),
  FOREIGN KEY (menu_id) REFERENCES menus(menu_id),
  FOREIGN KEY (booking_id) REFERENCES bookings(booking_id)
)

CREATE TABLE menu_changes
(
  change_id int NOT NULL PRIMARY KEY,
  menu_id int NOT NULL,
  booking_id int NOT NULL,
  change_details char,
  FOREIGN KEY (menu_id) REFERENCES menus_booked(menu_id),
  FOREIGN KEY (booking_id) REFERENCES menus_booked(booking_id)
)

在運行最后一個查詢時,出現錯誤:

引用表“ menus_booked”中沒有與外鍵“ FK_menu_chan_menu”中的引用列列表匹配的主鍵或候選鍵

我不確定我的查詢是否正確,無法解決此錯誤。

menus_booked的主鍵是menu_idbooking_id的唯一組合。 外國人必須指出這種結合,而不僅僅是其領域之一,這不一定是唯一的。 您的查詢當前嘗試定義兩個外鍵,每列一個,而不是列組合上的一個外鍵:

CREATE TABLE menu_changes
(
    change_id int NOT NULL PRIMARY KEY,
    menu_id int NOT NULL,
    booking_id int NOT NULL,
    change_details char,
    FOREIGN KEY (menu_id, booking_id) 
        REFERENCES menus_booked(menu_id, booking_id) -- Here!
)

外鍵必須引用primary key (或unique key但這是PK的問題),並且它必須完整地引用它。

FOREIGN KEY (menu_id) REFERENCES menus_booked(menu_id),
FOREIGN KEY (booking_id) REFERENCES menus_booked(booking_id)

您有menus_booked主鍵的兩個外鍵引用部分。 您必須將其更改為:

FOREIGN KEY (menu_id, booking_id) REFERENCES menus_booked(menu_id, booking_id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM