web-dev-qa-db-fra.com

Comment créer une clé étrangère qui est également une clé primaire dans MySQL?

Cela devrait être une question assez simple, mais je ne trouve pas de réponse facile. Comment créez-vous une clé étrangère qui est également une clé primaire dans MySQL? Voici ma tentative actuelle:

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);
);

Qu'est-ce que j'oublie ici?

Merci d'avance.

25
user456584

Ajoutez FOREIGN KEY (sale_id) REFERENCES Sale(sale_id) à chaque table étrangère:

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;

Assurez-vous simplement que votre base de données est InnoDB qui prend en charge les références étrangères.

47
dgilland