У меня есть следующее требование:
Мне нужно удалить записи из одной таблицы на основе данного идентификатора, теперь на эту таблицу ссылается другая таблица, а на другую таблицу ссылается еще одна таблица, и эта последняя На таблицу также ссылается другая таблица, поэтому у меня есть такая цепочка:
table_1 <- table_2 <- table_3 <- table_4
Я не настолько опытен с SQL, поэтому мое решение предполагает использование подзапросов для выполнения этой задачи. .
У меня есть что-то вроде этого:
DELETE FROM table_4
WHERE pk_of_table_3 IN
(SELECT id
FROM table_3
WHERE pk_of_table_2 IN
(SELECT id FROM table 2 WHERE pk_of_table_1 = ?
)
)
Так что это очистит записи из таблицы_4, которые ссылаются на целевые записи в таблице_3.
Для таблицы_3 я бы сделал что-то вроде:
DELETE FROM table_3
WHERE pk_of_table_2 IN
(SELECT id FROM table_2 WHERE pk_of_table_1 = ?)
Теперь я перехожу к таблице_2:
DELETE FROM table_2 WHERE pk_of_table_1 = 5;
Таким образом, в итоге у меня появляется возможность удалить необходимые записи из таблицы_1, поскольку она ничем не ограничена.
Я хотел спросить, кажется ли это жизнеспособным решением и есть ли лучшие способы сделать это?