Сохранение изменений с плавающей точкой в ​​столбец с плавающей точкой или в столбец varchar2? - PullRequest
0 голосов
/ 25 ноября 2018

Мне нужно сохранить до и после изменения значений некоторых полей таблицы items в таблицу items_log.Изменения сохраняются триггером после изменения в таблице items.

Некоторые столбцы таблицы items имеют тип varchar2, а некоторые - number(*).

Что такоелучший подход?Сохранение для разделения двух полей до и после number и двух полей до и после varchar2?Или сохранить пространство, сохранив все до двух до и после varchar2 полей?

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

Может ли сохранение значения с плавающей запятой в строковом поле привести к неожиданному отклонению от исходного значения?

Заранее спасибо

1 Ответ

0 голосов
/ 25 ноября 2018

«Какой подход лучше?»

«Лучшего» подхода не существует.Существует только подход, который достаточно хорош для вашего приложения.Если в вашей таблице будет несколько тысяч строк, это не имеет значения.Если в вашей таблице будет несколько миллионов строк, пространство может вызывать больше проблем.

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

Я часто использую подход APC.Таблица items_log совпадает с таблицей элементов и включает в себя идентификатор истории, метку времени, действие (I, U или D) и пользователя, а также все столбцы строки элемента.Все поддерживается триггером.Есть также встроенные функции аудита Oracle, чтобы сделать аудит для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...