我使用Symfony 2与Doctrine作为ORM框架。我正在寻找保存对数据库字段所做更改的最佳方法。我将有大约100个表格,每个表格有大约50个字段和一千行。现在我想保存对字段所做的所有更改。保存数据库字段更改 - 最佳实践?版本控制,可记录?
我想过的可能性: Doctrine扩展名“Loggable” - 将更改保存在不同的表中,但不知道它是否可以承担此数量的条目。
一个MySQL触发器对于保存在一个新表的变化各表?
但是,保存更改的最佳做法是什么?
我使用Symfony 2与Doctrine作为ORM框架。我正在寻找保存对数据库字段所做更改的最佳方法。我将有大约100个表格,每个表格有大约50个字段和一千行。现在我想保存对字段所做的所有更改。保存数据库字段更改 - 最佳实践?版本控制,可记录?
我想过的可能性: Doctrine扩展名“Loggable” - 将更改保存在不同的表中,但不知道它是否可以承担此数量的条目。
一个MySQL触发器对于保存在一个新表的变化各表?
但是,保存更改的最佳做法是什么?
您可以使用MySQL的触发器或提到DoctrineExtension可记录的功能。两者都有作用,都有利弊。 MySQL触发器可以写入一个单独的表(请参阅mysql trigger FAQ)。
触发器:
学说扩展:
如果将原则转换为别的东西的可能性很低,我会从原则扩展开始。这是一个具有帮助处理SQL的确切目的的工具。
这种事通常被称为“更改数据捕获”。它已经被问及与参考到MySQL之前,SO:
也许这个回答可以帮助你。
不同的供应商使这种内置功能在不同程度上。
我建议使用触发器去,特别是如果你希望你的日志记录功能保持独立于应用 - 也就是说,如果你决定要改写在不同的框架或完全不同的编程语言,你的应用程序,它仍然工作。
P.S.我不知道MySQL的触发器支持有多好,因为我在MySQL之前切换到了PostgreSQL。
以下文章有一步一步解释+使用触发器进行版本控制的示例代码。
我会尽力改进它。当然,“更改数据捕获”这个词语是值得的,因为OP可以采取这一措施并与之一起运行。 – duffymo 2012-03-23 19:40:59