我正在使用 MySQL 和 PHP 开发数据库应用程序。此刻,我正在尝试获取上次 UPDATE 引起的更改。我解决问题的第一种方法是
- 使用 SELECT 获得“旧”状态
- 使用 UPDATE 进行更改
- 使用 SELECT 获得“新”状态
- 将数组与 php 进行比较
这是三个mysql连接......
有什么办法可以缩短这个吗?
您可以执行更新前触发器,将记录的整个副本推送到历史表中,该表还包含您希望存储的其他状态数据(更新日期、用户等)
这样,您将拥有完整的修订历史记录,记录发生的事情,并且应该透明地发生。只想记住你应该从历史表中删除任何唯一的约束。
希望这可以帮助。
让我告诉你我是怎么做到的,
当我更新一行时,首先我得到我正在更新的行,然后我调用它们active records
。然后我将每一列active records
与表单字段进行比较。这就是我知道哪一列发生了变化的方式。
如果您想存储更改的列,请创建history
类似的表;
id (for primary key)
tablename (which table i'm updating)
recordid (which row i'm updating)
column (which columns has been changed)
oldvalue (active record value)
newvalue (form value-updated value)
date (obvious)
user (who did this change)
之后,您可以将您的想象力用于您想要使用的结构。
您可以使用以下 hack 使用变量:
update table set
col=(@oldValue:=col),col=newValue
where id=1234;
select @oldValue;