У меня есть три таблицы: Employee, Dependent и DependsOn. По какой-то причине на моем сервере код MySQL неправильно выполняет каскадное удаление. Я вставляю Сотрудника, Зависимого, затем связываю их в DependsOn. Если я удаляю Employee, он должен удалить соответствующую строку в DependsOn. Однако, это не так. Если я запускаю запрос в SQLFiddle.com, он работает нормально. Почему это не работает?
CREATE TABLE Employee
(
SSN int(9) not null unique,
First_Name varchar(16) default null,
Middle_Initial char(1) default null,
Last_Name varchar(16) default null,
Address varchar(64) default null,
Phone_Number char(10) default null,
PRIMARY KEY(SSN)
);
CREATE TABLE Dependent
(
Dependent_Name varchar(32) NOT NULL,
Dependent_Relationship varchar(32) NOT NULL,
KEY(Dependent_Name),
KEY(Dependent_Relationship)
);
CREATE TABLE DependsOn
(
E_SSN int(9) NOT NULL UNIQUE,
D_Name varchar(32) NOT NULL,
D_Relationship varchar(32) NOT NULL,
FOREIGN KEY(E_SSN) REFERENCES Employee(SSN) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(D_Name) REFERENCES Dependent(Dependent_Name) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(D_Relationship) REFERENCES Dependent(Dependent_Relationship) ON DELETE CASCADE ON UPDATE CASCADE
);
INSERT INTO Employee VALUES(111223333, "John", "A", "Doe", NULL, NULL);
INSERT INTO Dependent VALUES("Albert A Doe", "Son");
INSERT INTO DependsOn(111223333, "Albert A Doe", "Son");