Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql cria tabela com várias chaves estrangeiras em delete set null


Sua regra de chave estrangeira é ON DELETE SET NULL mas sua definição de coluna é NOT NULL .

Altere sua definição de coluna e remova o NOT NULL parte ou pense demais em sua regra de chave estrangeira. Isso funciona:
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;

Demonstração do SQLFiddle