Подтвердить что ты не робот

Как создать внешний ключ, который также является первичным ключом в 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);
);

Что мне здесь не хватает?

Спасибо заранее.

4b9b3361

Ответ 1

Добавьте 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, которая поддерживает внешние ссылки.