web-dev-qa-db-ja.com

MySQLの主キーでもある外部キーを作成する方法は?

これはかなり簡単な質問ですが、簡単な答えを見つけることができません。 MySQLの主キーでもある外部キーをどのように作成しますか?これが私の現在の試みです:

CREATE TABLE Sale(
    sale_id CHAR(40),
    PRIMARY KEY(sale_id),
    discount DOUBLE,
    type VARCHAR(255),
    price DOUBLE,
    );

CREATE TABLE Normal_Sale(
    sale_id CHAR(40),
    PRIMARY KEY(sale_id);
);

CREATE TABLE Special_Sale(
    sale_id CHAR(40),
    PRIMARY KEY(sale_id);
);

ここで何が欠けていますか?

前もって感謝します。

25
user456584

各外部テーブルにFOREIGN KEY (sale_id) REFERENCES Sale(sale_id)を追加します。

CREATE TABLE Sale(
    sale_id CHAR(40),
    PRIMARY KEY(sale_id),
    discount DOUBLE,
    type VARCHAR(255),
    price DOUBLE
) ENGINE=INNODB;

CREATE TABLE Normal_Sale(
    sale_id CHAR(40),
    PRIMARY KEY(sale_id),
    FOREIGN KEY (sale_id) REFERENCES Sale(sale_id)
) ENGINE=INNODB;

CREATE TABLE Special_Sale(
    sale_id CHAR(40),
    PRIMARY KEY(sale_id),
    FOREIGN KEY (sale_id) REFERENCES Sale(sale_id)
) ENGINE=INNODB;

データベースが外部参照をサポートするInnoDBであることを確認してください。

47
dgilland