Запретить обновление не-существующих строк

На работе у нас есть таблица для хранения настроек, которая по существу содержит следующие столбцы.:

  • PARAMNAME
  • VALUE

В большинстве случаев новые настройки добавляются, но в редких случаях настройки удаляются. К сожалению, это означает, что любые скрипты, которые могли ранее обновить это значение, будут продолжать делать это, несмотря на то, что обновление приводит к «0 rows updated» и приводит к неожиданному поведению.

Эта ситуация была обнаружена недавно из-за неудачного регрессионного теста, но только после тщательного изучения того, почему данные в системе были другими.

Итак, мой вопрос::Есть ли способ сгенерировать состояние ошибки, когда обновление приводит к нулевому обновлению строк?

Вот несколько вариантов, о которых я подумал, но ни один из них не является столь уж желательным.:

  • Оболочка PL/SQL, которая замечает неудачное обновление и выдает исключение.
    • Не идеально, так как не мешает кому-либо/скрипту выполнять обновление вручную.
  • Триггер для таблицы, выдающий исключение.
    • Противоречит нашей текущей политике отказа от триггеров.
    • Требует обновления триггера каждый раз при удалении параметра и ведения списка устаревших параметров (при исключении).
    • Могут возникнуть проблемы с изменяемой таблицей (, если включение выполняется путем запроса существующих настроек).
5
задан Burhan Ali 16 April 2012 в 22:42
поделиться