簡體   English   中英

無法在 mySQL 中創建表

[英]Can't create a table in mySQL

我正在嘗試一個表,其中主鍵是主鍵是外鍵的表的外鍵,但它不創建表,我不知道為什么它不創建。

我要創建的表:

CREATE TABLE proj__exames(
    floor NUMERIC(2), 
    room NUMERIC(3), 
    name VARCHAR(40), 
    PRIMARY KEY (floor, room, name),
    FOREIGN KEY (floor) REFERENCES proj__rooms (floor) ON DELETE CASCADE,
    FOREIGN KEY (room) REFERENCES proj__rooms (room) ON DELETE CASCADE,
    FOREIGN KEY (name) REFERENCES proj__rooms (name) ON DELETE CASCADE
);

我從中獲取外鍵的表(創建時沒有任何問題)

CREATE TABLE proj__rooms(
    floor NUMERIC(2),
    room NUMERIC(3),
    name VARCHAR(40),
    equipment_type VARCHAR(40),
    max_exam_number NUMERIC(2) NOT NULL,
-- ========
    CONSTRAINT pk_rooms
        PRIMARY KEY (name, floor, room),
-- ========
    CONSTRAINT fk_salas_nome   
        FOREIGN KEY (name)
            REFERENCES clinic (name) ON DELETE CASCADE,
-- ========
    CONSTRAINT ck_rooms_max_exam_number
        CHECK (max_exam_number >= 0) 
);

錯誤原來是引用列上缺少索引。 基本上你必須像這樣重組proj__rooms DDL:

CREATE TABLE proj__rooms(
    floor NUMERIC(2),
    room NUMERIC(3),
    name VARCHAR(40),
    equipment_type VARCHAR(40),
    max_exam_number NUMERIC(2) NOT NULL,   
    -- ========
    CONSTRAINT pk_rooms
        PRIMARY KEY (name, floor, room),
    KEY(floor),
    KEY(room),
    KEY(name),
    -- ========
    CONSTRAINT fk_salas_nome   
        FOREIGN KEY (name)
            REFERENCES clinic (name) ON DELETE CASCADE,
    -- ========
    CONSTRAINT ck_rooms_max_exam_number
        CHECK (max_exam_number >= 0) 
);

我還建議您在進一步的問題中添加 MySQL 控制台錯誤,這樣可以更容易理解您面臨的問題

暫無
暫無

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

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