我有一个表,例如orders
(id,name,product,…),我有它的日志表,触发器在其中写入:`orders_log(id,ts,order_id,name,product,…)
表orders
通过表orders_services
(order_id,service_id)具有表service
(id,name,price,…)的ManyToMany关系
用户通过web表单可以为订单添加或删除服务,我必须存储有关此操作的日志,并在用户编辑订单时将其显示给他。
解决这个问题的最佳方法是什么?对于orders
表,我有多个manyToMany关系和一些一对一ToMany关系。我使用的是mysql。感谢
我曾尝试实现一个基于触发器的系统,但我发现它很麻烦,于是放弃了。
我在一个基于存储过程的系统中取得了部分成功,该系统复制了影子表中包含原始字段和事务id的行。我保留了一个单独的表,其中事务id与日期/用户等信息相关。这个系统允许我们为一组操作分配一个唯一的事务id,然后基于这些操作查询这些影子表。
我目前在Java中工作,我的审计日志是通过在一个表中用XStream序列化我的对象来实现的,该表包含类名、一些标识对象id的locom、日期+xml文本。我认为这是一个很好的审计日志解决方案,因为记录的信息随着对象模型的增长而增长。基于后续xml之间的差异,创建一个包含更改的报告也很容易。