将float更改保存到float还是varchar2列?

时间:2018-11-25 10:23:13

标签: oracle oracle11g

我需要将items表中某些字段的值更改前后保存到items_log表中。更改由更改后触发器保存在items表上。

某些items表列是varchar2类型,有些是number(*)类型。

什么是更好的方法?是否保存以分隔number之前和之后的两个字段以及varchar2之前和之后的两个字段?还是通过在varchar2字段之前和之后将所有内容保存到两个来节省空间?

此日志表的目的是记录哪个用户更改了字段以及之前和之后的值。

是否可以将浮点值保存到字符串字段中,从而导致从原始值意外转移?

预先感谢

1 个答案:

答案 0 :(得分:0)

“有什么更好的方法?”

没有“更好”的方法。只有一种方法对您的应用程序足够好。如果您的表中有几千行,那没关系。如果您的表将有几百万行,那么空间可能更值得关注。

如果您的目标是向用户显示您的商品发生了什么变化,而又不会看到很多活动,那么将所有内容存储为varchar可能就足够了。您可能不想为未更改的字段存储行。

我经常使用APC的方法。 items_log表与项目表相同,并且包括历史记录ID,时间戳,操作(I,U或D)和用户以及项目行的所有列。一切都由触发器维护。还有内置的Oracle审计功能可以为您进行审计。