我需要将items
表中某些字段的值更改前后保存到items_log
表中。更改由更改后触发器保存在items
表上。
某些items
表列是varchar2
类型,有些是number(*)
类型。
什么是更好的方法?是否保存以分隔number
之前和之后的两个字段以及varchar2
之前和之后的两个字段?还是通过在varchar2
字段之前和之后将所有内容保存到两个来节省空间?
此日志表的目的是记录哪个用户更改了字段以及之前和之后的值。
是否可以将浮点值保存到字符串字段中,从而导致从原始值意外转移?
预先感谢
答案 0 :(得分:0)
“有什么更好的方法?”
没有“更好”的方法。只有一种方法对您的应用程序足够好。如果您的表中有几千行,那没关系。如果您的表将有几百万行,那么空间可能更值得关注。
如果您的目标是向用户显示您的商品发生了什么变化,而又不会看到很多活动,那么将所有内容存储为varchar可能就足够了。您可能不想为未更改的字段存储行。
我经常使用APC的方法。 items_log
表与项目表相同,并且包括历史记录ID,时间戳,操作(I,U或D)和用户以及项目行的所有列。一切都由触发器维护。还有内置的Oracle审计功能可以为您进行审计。