Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql crea una tabella con più chiavi esterne su delete set null

La tua regola per la chiave esterna è ON DELETE SET NULL ma la definizione della tua colonna è NOT NULL .

Modifica la definizione della colonna e rimuovi NOT NULL parte o pensa troppo alla tua regola di chiave esterna. Funziona:

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;

Demo SQLFiddle