Есть три таблицы:
table1: id, name
table2: id, name, table1_id
table3: id, name, table2_id
Как при удалении поля из верхней, удалить все привязанные поля в нижних? Проблема бОльшей вложенности не стоит, 3 таблицы 100% максимум. Пробовал вот так, но работает не совсем корректно, сносит table3 целиком
DELETE table1
, table2
, table3
FROM table1
INNER JOIN table2
ON table2.table1_id = table1.id INNER JOIN table3
ON table3.table2_id = table2.id WHERE table1.id = 1
1 вариант (рекомендованный): Настроить каскадное удаление для внешних ключей table1_id
и table2_id
.
2 вариант: Поочередно удалить записи сначала из table3
, потом table2
и наконец из table1
DELETE FROM table3 WHERE table2_id in
(SELECT id FROM table2 WHERE table1_id in
(SELECT id FROM table1 WHERE [здесь ваше условие для выбора удаляемой записи из таблицы 1]))
DELETE FROM table2 WHERE table1_id in
(SELECT id FROM table1 WHERE [здесь ваше условие для выбора удаляемой записи из таблицы 1])
DELETE FROM table1 WHERE [здесь ваше условие для выбора удаляемой записи из таблицы 1]
Можно вот так сделать:
Добавляем констрейны
ALTER TABLE table2 ADD CONSTRAINT FK_table1_table2 FOREIGN KEY (table1_id) REFERENCES table1(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE table3 ADD CONSTRAINT FK_table2_table3 FOREIGN KEY (table2_id) REFERENCES table2(id) ON DELETE CASCADE ON UPDATE CASCADE;
Производим удаление
DELETE FROM table1 t1 WHERE t1.id = 5;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите, есть ли в css возможность выставления свойства !important сразу для всех свойств
При наведении на блок съезжают нижние, а надо чтоб он перекрывал собой остальныеКак можно сделать?
Есть поле ввода кода и кнопка ДобавитьКнопка берет значение с поля ввода, а как сделать так, чтобы отдельная кнопка передавала свое значение?...
Возможно ли обернуть каждое слово по отдельности в тег ? На примере текста : Cras ultricies ligula sed magna dictum porta только что бы каждое слово было по отдельности...