CoffeeScript-подобный язык для C / C ++

Как вы заметили, будет сложно ответить на ваши бизнес-требования с помощью триггеров. Причина в том, что Oracle может обновлять / вставлять таблицы с несколькими потоками одновременно для одного запроса (параллельный DML). Это означает, что ваш сеанс не может запрашивать таблицу, которую он обновляет, пока происходит обновление.

Если вы действительно хотите сделать это с помощью триггеров, вам придется следовать вид логики, показанный в этом статья Тома Ките . Как вы видите, это не что-то простое.

Существует еще один, более простой, более элегантный, более простой в обслуживании метод: использование процедур. Отменить право на обновление / вставить пользователю (пользователям) приложения и написать набор процедур, которые позволяют приложению обновлять столбцы состояния.

Эти процедуры будут содержать блокировку родительской строки ( для предотвращения нескольких сеансов для изменения одного и того же набора строк) и будет применять вашу бизнес-логику эффективным, понятным и легко поддерживаемым способом.

37
задан Ian 31 May 2011 в 15:59
поделиться