php-使用CodeIgniter记录数据库中的更改的合适方法

我想为我的小型CodeIgniter应用程序创建一个简单的审核系统.这样就可以在编辑表条目之前为它创建快照.我想到的一种方法是创建一个news_audit表,该表将复制news表中的所有列.它还将为每个更改创建新记录,并添加日期添加列.您对将此类功能构建到PHP Web应用程序中有何见解?

解决方法:

在决定使用哪种解决方案之前,需要考虑以下几点:

如果您的表很大(或可能会变大),则您的审核跟踪需要按照您的描述放在单独的表中,否则性能会受到影响.

如果您需要(可能)修改(添加新条目除外)的审核,则它仅需要对应用程序具有INSERT权限(并且铸铁需要在专用的日志服务器上…)

我会避免在同一张表中创建审计记录,因为这可能会使另一个开发人员感到困惑(他们可能没有意识到他们需要过滤掉没有日期的旧记录),并且会使表中的审计行变得混乱,这将迫使数据库缓存超过所需数量的磁盘块(==性能成本).另外,如果您的数据库未索引NULLS,则正确地对此进行索引也可能是一个问题.如果选择全部时间戳,则查询最新版本将涉及一个子查询.

如果数据库支持,解决此问题的最简单方法是在新闻表上创建UPDATE TRIGGER,将旧值复制到单独的审核表中,该审核表仅需要INSERT权限.这样,逻辑就内置在数据库中了,因此您的应用程序不必关心它,它们只是更新数据,而db负责保留更改日志.触发器的主体将只是一个INSERT语句,因此如果您之前未编写过该语句,则应该花很长时间.

如果我知道您正在使用哪个数据库,则可以发布示例…

上一篇:php-如何在CodeIgniter中更改URL?


下一篇:php-如何在Codeigniter中创建动态站点地图