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