簡體   English   中英

MySQL 錯誤 - 無法添加外鍵約束

[英]MySQL Error - Cannot add foreign key constraint

我知道這個問題已經被問過好幾次了,但問題似乎是由於父行和子行之間的數據類型不同。 就我而言,數據類型是相同的,但我仍然收到錯誤消息。 這是我的代碼

CREATE TABLE STUDENT_2(
    StudentNumber       INT                 NOT NULL AUTO_INCREMENT,
    StudentName         VARCHAR(50)         NULL,
    Dorm                VARCHAR(50)         NULL,
    RoomType            VARCHAR(50)         NOT NULL,
    CONSTRAINT          STUDENTPK           PRIMARY KEY(StudentNumber)
);

CREATE TABLE DORM_COST(
    RoomType            VARCHAR(50)         NOT NULL,
    DormCost            DECIMAL(7,2)        NULL,
    CONSTRAINT          DORM_COSTPK         PRIMARY KEY(RoomType),
    CONSTRAINT          DORM_COST_FK        FOREIGN KEY(RoomType)
        REFERENCES      STUDENT_2(RoomType)
                ON UPDATE CASCADE
                ON DELETE CASCADE
);

其中 DORM_COSTS 的外鍵不能添加。 謝謝!

您需要具有外鍵而不是主鍵的表上的外鍵引用。 所以,那將是:

CREATE TABLE DORM_COST (
    RoomType            VARCHAR(50)         NOT NULL,
    DormCost            DECIMAL(7,2)        NULL,
    CONSTRAINT          DORM_COSTPK         PRIMARY KEY(RoomType)
);

CREATE TABLE STUDENT_2(
    StudentNumber       INT                 NOT NULL AUTO_INCREMENT,
    StudentName         VARCHAR(50)         NULL,
    Dorm                VARCHAR(50)         NULL,
    RoomType            VARCHAR(50)         NOT NULL,
    CONSTRAINT          STUDENTPK           PRIMARY KEY(StudentNumber),
    CONSTRAINT fk_student2_roomtype FOREIGN KEY (RoomType) REFERENCES DORM_COST(RoomType)
);

是一個 db<>fiddle,表明這是有效的。

也就是說你的數據模型看起來很奇怪。

  • 我希望一個名為表RoomTypes有一個主鍵RoomTypeId
  • 我希望dorm_cost有日期,因為成本每年都會有所不同。
  • 我希望不同的宿舍有類似的房間類型——單人間、雙人間等等。
  • 我希望這些房間類型可能因宿舍而異。

暫無
暫無

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

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