Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql crée une table avec plusieurs clés étrangères lors de la suppression set null

Votre règle de clé étrangère est ON DELETE SET NULL mais votre définition de colonne est NOT NULL .

Soit changez votre définition de colonne et supprimez le NOT NULL partie ou trop penser à votre règle de clé étrangère. Cela fonctionne :

CREATE TABLE Vineyard (
    VineyardID smallint auto_increment,
    VineyardName VARCHAR(45) NOT NULL,
    FarmerID    smallint,
    GrapeID smallint,
    ComeFrom    varchar(45) NOT NULL,
    HarvestedAmount int,
    RipenessPercent int,
    PRIMARY KEY (VineyardID),
    FOREIGN KEY (FarmerID) REFERENCES Worker(WorkerID)
        ON DELETE SET NULL
        ON UPDATE CASCADE,
    FOREIGN KEY (GrapeID) REFERENCES Grape(GrapeID)
        ON DELETE SET NULL
        ON UPDATE CASCADE
)Engine=InnoDB;

Démo SQLFiddle