Как создать внешний ключ, который также является первичным ключом в MySQL? - PullRequest
23 голосов
/ 07 апреля 2011

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

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

Заранее спасибо.

1 Ответ

46 голосов
/ 07 апреля 2011

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

...