Я думаю, что вы рискуете попробовать слишком настольный диск. Пытаясь составить таблицу всех условий до и после проверки, вы становитесь опасно близкими к попытке записи кода в данные.
Я создал несколько довольно сложных приложений для планирования заданий. В частности, один из них, который может представлять интерес, - это ежедневный процесс ETL, который загружал десятки таблиц SQL на основе простых файловых каналов.
Существующая система использовала линейный процесс, в котором программист должен был вручную обработать зависимости между таблицами и выполнить загрузки таблиц в заданном порядке. Проблема заключалась в том, что в случае сбоя какого-либо процесса остальные задания должны были сидеть и ждать, пока проблема не будет решена.
Я создал новую систему с метаданными, управляемыми таблицами, которые указывали на непосредственные зависимости между таблицами. Другими словами, таблица A имеет FK для таблиц B и C. Вместо того, чтобы вручную отслеживать все взаимозависимостей вручную, отслеживались только непосредственные взаимозависимости. Тогда планировщику просто нужно было посмотреть, какие нагрузки завершены, а какие - нет. Любая ожидающая загрузка, у которой не было неполных зависимостей, могла начинаться нормально.
Я думаю, вы должны построить свою систему аналогичным образом. Используйте разделение проблем. Не указывайте в таблице диск , что это за зависимости , вместо этого вам нужно просто таблица дисков , какие зависимости существуют . Вы можете отслеживать в своих таблицах планирования, какие из этих зависимостей прошли, а какие - нет. База данных не должна знать, как выполнять эти тесты. Пусть код беспокоится о том, какие именно зависимости, и как проверить, проходят ли они или нет. Это все, что нужно знать вашему планировщику работы. Избегайте соблазна создать язык сценариев, исходный код которого находится в вашей базе данных.