Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL erstellt Tabelle mit mehreren Fremdschlüsseln beim Löschen auf Null gesetzt

Ihre Fremdschlüsselregel ist ON DELETE SET NULL aber Ihre Spaltendefinition ist NOT NULL .

Ändern Sie entweder Ihre Spaltendefinition und entfernen Sie NOT NULL Teile oder überdenke deine Fremdschlüsselregel. Das funktioniert:

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;

SQLFiddle-Demo