如何创建也是MySQL主键的外键?

use*_*584 25 mysql inheritance foreign-keys primary-key

这应该是一个相当简单的问题,但我无法找到一个简单的答案.如何创建一个也是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);
);
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

提前致谢.

dgi*_*and 47

添加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;
Run Code Online (Sandbox Code Playgroud)

只需确保您的数据库InnoDB支持外部引用.