Скажите, если у меня есть база данных с таблицами истории:
[SomeTable]
SomeColumn1
SomeColumn2
UpdatedDTM
UpdatedUserID
IsObselete
[SomeTableHistory]
SomeColumn1
SomeColumn2
UpdatedDTM
UpdatedUserID
AuditedDTM
Когда обновляется строка в SomeTableдолжно произойти следующее:
- Строка в SomeTable требует вставки в SomeTableHistory.
- Строка в SomeTable нуждается в обновлении с новыми значениями.
- ОбновленоDTMВ столбце SomeTable необходимо установить текущее время.
Сначала я подумал о том, чтобы использовать хранимые процедуры:
add_sometable_entry(SomeColumn1, SomeColumn2, UserID)
update_sometable_entry(ID, SomeColumn1, SomeColumn2, UserID)
expire_sometable_entry(ID, UserID)
Затем я подумал: а не использовать ли триггеры вместо этого, разрешивобычные вызовы sql «вставлять в sometable» и «обновлять sometable» для работы с SomeTable и с автоматически работающими механизмами истории.
Или, конечно, есть возможность просто встроить sql, чтобы сделать это для каждой таблицы историив DAL.
В настоящее время я склоняюсь к хранимым процедурам, поэтому могу поддерживать DAL в чистоте, а также разрешаю только вставлять / обновлять / удалять доступ к данным.основываться на хранимых процедурах, которые помогут помешать дистрибьюторам / покупателям «поиграть» и напрямую манипулировать столами.
Что думают люди об этом?
Я используюPostgreSQL (хотя это не имеет никакого отношения, не так ли? ..)