我使用Symfony 2和Doctrine作为ORM Framework。我正在寻找保存对数据库字段所做更改的最佳方法。我将有大约100个表,每个表有大约50个字段和几千行。现在我想保存对字段所做的所有更改。
我想到的可能性: Doctrine扩展名“Loggable” - 将更改保存在不同的表中,但不知道它是否能够提供这么多的条目。
每个表的MySQL触发器,用于保存新表中的更改吗?
但保存更改的最佳做法是什么?
答案 0 :(得分:5)
您可以使用MySQL触发器或提到的DoctrineExtension Loggable功能。这两部作品都有缺点和优点。 MySQL触发器可以写入单独的表(参见mysql trigger FAQ)。
触发器:
学说扩展:
如果把学说转换成其他东西的可能性很低,我会从学说扩展开始。它毕竟是一个有助于处理SQL的确切目的的工具。
答案 1 :(得分:1)
我建议使用触发器,特别是如果您希望您的日志记录功能保持独立于应用程序 - 也就是说,即使您决定在不同的框架或完全不同的编程语言上重写您的应用程序,它也会起作用。
P.S。我不知道MySQL中的触发器支持有多棒,因为我在MySQL甚至拥有它们之前就切换到了PostgreSQL。
答案 2 :(得分:0)
这种事情通常被称为“变更数据捕获”。在SO:
之前已经被问及参考MySQL也许这个答案可以帮到你。
不同的供应商在不同程度上将其作为内置功能。</ p>
答案 3 :(得分:0)
以下文章详细介绍了使用触发器进行版本控制的示例代码。