Database 保存数据库字段更改-最佳做法?版本控制,可记录?
我使用Symfony 2和条令作为ORM框架。我正在寻找保存对数据库字段所做更改的最佳方法。我将有大约100个表,每个表有大约50个字段和大约1000行。现在我想保存对字段所做的所有更改 我想到的可能性: 条令扩展“Loggable”-将更改保存在另一个表中,但不知道它是否能够承受如此多的条目 每个表都有一个MySQL触发器,用于在新表中保存更改Database 保存数据库字段更改-最佳做法?版本控制,可记录?,database,symfony,doctrine,Database,Symfony,Doctrine,我使用Symfony 2和条令作为ORM框架。我正在寻找保存对数据库字段所做更改的最佳方法。我将有大约100个表,每个表有大约50个字段和大约1000行。现在我想保存对字段所做的所有更改 我想到的可能性: 条令扩展“Loggable”-将更改保存在另一个表中,但不知道它是否能够承受如此多的条目 每个表都有一个MySQL触发器,用于在新表中保存更改 但是保存更改的最佳实践是什么呢?这种事情通常被称为“更改数据捕获”。之前有人问过关于MySQL的问题,所以: 也许这个答案可以帮助你 不同的供应商在
但是保存更改的最佳实践是什么呢?这种事情通常被称为“更改数据捕获”。之前有人问过关于MySQL的问题,所以: 也许这个答案可以帮助你
不同的供应商在不同程度上将此作为一种内置功能。我建议使用触发器,特别是如果您希望日志功能保持应用程序独立性,也就是说,即使您决定在不同的框架或完全不同的编程语言上重写应用程序,它也会起作用
另外,我不知道MySQL中对is触发器的支持有多好,因为我在MySQL拥有它们之前就切换到了PostgreSQL。您可以使用MySQL触发器或提到的DoctrineExtension日志功能。两者都有效,都有利弊。MySQL触发器可以写入一个单独的表(请参阅) 触发因素:
- ++框架,独立于编程语言
- ++当您希望手动或通过脚本修改数据时,此功能将起作用
- --您必须为每个表编写触发器,或者必须在SQL中找到一些通用的解决方案(对此我无能为力)
- --如果您不熟悉存储过程和PL/SQL,那么就有学习曲线
- ++只需在类上添加注释,就完成了李>
- ++您可以通过存储库API查询历史记录、恢复更改
- --你把自己锁定在一个供应商那里,这有时是,有时不是问题
- --手动或使用第三方脚本修改数据时不起作用
如果将条令转换为其他条令的机会很低,我会从条令扩展开始。毕竟,这是一个帮助处理SQL的工具。下面的文章提供了使用触发器进行版本控制的分步说明+示例代码
我会努力改进的。当然,“更改数据捕获”这句话本身是值得的,因为OP可以接受它并与之一起运行。