gpt4 book ai didi

php - 为 CRUD 操作创建历史表的最佳方式

转载 作者:可可西里 更新时间:2023-11-01 07:30:31 24 4
gpt4 key购买 nike

我问自己什么是为网站创建历史表的最佳方式,我只知道两个选择:

  1. 使用触发器
  2. 在使用与其相关的插入/更新/删除语句时,在代码中添加额外的插入语句

他们说触发器会是更好的方法,因为负载会在数据库上而不是在程序中。但是由于我的网站有多个管理员,我还需要跟踪谁修改了内容,我认为这只能通过在历史表中创建一个 modified_by 列并通过插入手动插入值来实现该列的 session 用户使用第二个选项以及 time_modifiedmodified_frommodified_to 值。

我需要查明这是否是使用第二个选项的可接受理由?还有更多选择吗?第二种选择会在未来产生任何问题吗?

最佳答案

有一个 Rails gem https://github.com/airblade/paper_trail全面实现您提到的功能。我会假设它纯粹是在应用程序代码级别而不是数据库(触发器)级别进行的。这可能进一步表明选项 2 更好。我的想法是:

  1. 如果您使用触发器,随着网站流量的增长和 CRUD 操作的增加,您将面临严重的性能折衷。那时会触发很多触发器。

  2. 在数据库级别实现部分业务逻辑可能很诱人,但我想将其全部保存在我的应用程序代码中的一个位置。

  3. 如果您希望让您的应用程序数据库保持不可知,您需要认真考虑一下。如果您使用不同的数据库服务器,则需要重新实现触发器。

  4. 保留历史会增加表的大小,并可能成为数据库性能的瓶颈。您可以选择在有限的时间间隔内保留历史记录,然后将其归档以保持数据库表的整洁。此外,您可以有一个单独的数据库服务器只负责与历史相关的表。这些事情对于触发器来说会很复杂。

关于php - 为 CRUD 操作创建历史表的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com