Как достигнуть имеющих версию ассоциаций ActiveRecord?

Как поднять собственное исключение? Примерно так:

SQL> set serveroutput on
SQL> create or replace procedure p_test is
  2    my_ex exception;
  3  begin
  4    raise my_ex;
  5  exception
  6    when my_ex then
  7      dbms_output.put_line('My exception');
  8  end;
  9  /

Procedure created.

SQL> exec p_test
My exception

PL/SQL procedure successfully completed.

SQL>

Вместо того, чтобы отобразить его на экране, вы бы сохранили его в какой-то таблице.

5
задан mat 15 December 2008 в 16:12
поделиться

3 ответа

Попробуйте плагин ActsAsVersioned

7
ответ дан 13 December 2019 в 22:19
поделиться

Если Вы не имеете дело с огромными объемами данных, и дополнительный временный размер не продвинет Ваш дб по краю, нет никаких главных оборотных сторон к исторически имеющим версию данным. Дополнительная сложность запроса может быть небольшой болью, но это ничего серьезного.

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

valid_from - дата и время - дата и время, в которой была создана эта версия

valid_to - дата и время - дата и время, что эта версия прекратила быть допустимой

root_id - целое число - идентификатор исходной строки (что это - последующая версия),

created_by - целое число - идентификатор пользователя пользователя, который выполнил создание этой версии

retired_by - целое число - идентификатор пользователя пользователя, который ликвидировал эту версию

Для в настоящее время активных строк valid_to является пустым. Добавление индекса на valid_to помогает в хранении мгновенной производительности.

2
ответ дан 13 December 2019 в 22:19
поделиться

Поддержка исторического состояния в транзакционном приложении является хорошим способом в широком масштабе развернуть сложность, замедлить производительность DB и сделать жизнь трудной для себя. Если Вы только должны отобразиться или сообщить относительно исторического состояния и не нуждаетесь в нем до минуты, рассматривают создание схемы "звезда" с Типом-II, медленно изменяющим размеры и периодический процесс, который обновляет его.

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

При необходимости в довольно частом обновлении, можно реализовать систему измененного сбора данных на базе данных, которая относительно проста, если приложение только должно касаться текущего состояния. С механизмом CDC процесс загрузки только должен обновить на основе изменений и будет работать относительно быстро.

1
ответ дан 13 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: