Mysql удалить несколько таблиц с левым объединением в одном операторе вызвало нарушение FK. Например,
Student StudentDetail
-------- ------------------------------
id, name studentId, birthday, address
100 John 100 1/1/1982 A1
200 Scott 200 1/1/1978 A2
300 Tiger 300 1/1/1988 A3
FullTimeStudent
------------------
studentId, program
200 P1
Столбец studentId StudentDetail и FullTimeStudent - это FK, ссылающийся на столбец id таблицы Student.
Удалить учащегося с id = 200
delete t0, t2, t1 from StudentDetail t1
LEFT join FullTimeStudent t2 on (t1.studentId=t2.studentId)
LEFT join Student t0 on (t1.studentId=t0.id) where t0.id=200;
Ошибка: нарушение ограничения внешнего ключа.
ЕСЛИ замена левого соединения на внутреннее соединение удаляется успешно. Что не так с левым соединением?
Но нет разницы между левым и внутренним соединением для выбора.
select t0.id, t2.studentId, t1.studentId from StudentDetail t1
LEFT join FullTimeStudent t2 on (t1.studentId=t2.studentId)
LEFT join Student t0 on (t1.studentId=t0.id) where t0.id=100;
Возвращает одну строку.