Утверждение "Для простоты предположим, что в базе нет входящих foreign key на таблицу task (при их наличии решение задачи немного усложняется)." содержит некое лукавство. Потому как наличие 2-3 слоев зависимостей по ключам приводит к необходимости отдельно собирать идентификаторы строк переносимых из каждой таблицы и заботиться о синхронизации переноса. Сбор этих данных "на лету" начинает очень дорого стоить.
Утверждение "Для простоты предположим, что в базе нет входящих foreign key на таблицу task (при их наличии решение задачи немного усложняется)." содержит некое лукавство. Потому как наличие 2-3 слоев зависимостей по ключам приводит к необходимости отдельно собирать идентификаторы строк переносимых из каждой таблицы и заботиться о синхронизации переноса. Сбор этих данных "на лету" начинает очень дорого стоить.