加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2021-01-20 14:44:48 所属栏目:MySql教程 来源:网络整理
导读:我想为我的小型CodeIgniter应用程序创建一个简单的审核系统.这样就可以在编辑表条目之前为它创建快照.我想到的一种方法是创建一个news_audit表,该表将复制news表中的所有列.它还将为每个更改创建新记录,并添加日期添加列.您对将此类功能构建到PHP Web应用程

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

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

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

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

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

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

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读