У меня есть несколько таблиц, участвующих в операторе слияния, который выполняется параллельно. Слияние выводит в таблицу ошибок, которая генерируется с помощью функции DBMS_ERRLOG.CREATE_ERROR_LOG. Оператор работает отлично, и слияние работает.
Затем я добавил дополнительный столбец в таблицу ошибок, и он продолжает работать без проблем.
Теперь я хочу, чтобы у этого дополнительного столбца было значение по умолчанию, основанное на значении в другом месте системы (по сути, дата пакетной обработки, которая в любом случае не совпадает с текущей датой-временем) - и я отключаюсь по ограничения на каждом шагу.
- Я попытался заполнить значение с помощью триггера, но затем он помещает триггер в таблицу, включенную в параллельный DML, что недопустимо, и при объединении выдается ошибка. (Это вызывает досадные ошибки)
- Я попытался добавить значение по умолчанию на основе функции pl / sql - это недопустимо.
- Я попытался добавить значение по умолчанию на основе оператора sql - это опять не разрешено.
Я мог бы реализовать дополнительную постобработку обновления, чтобы заполнить столбец, но тогда это должно было бы быть сделано для каждой таблицы, которую я объединяю, и это действительно немного хакерство - когда система расширяется, об этом нужно помнить для каждая таблица ошибок. Заполнение значения по умолчанию является предпочтительным подходом.
Как обойти ограничение Oracles PDML для триггера, чтобы заполнить это значение на основе фактически оператора select.