即使在更新之后,MYSQL查询也可以获取旧记录

时间:2012-09-28 04:03:26

标签: mysql

我想知道我的MYSQL数据库中先前更新的值。

si.no   cus_name     date      status
  1      JOHN     2012-05-02   active 

  1      PAUL     2012-05-02   active ( not a new record just an 1st-update )

  1      JOSE     2012-05-02   active  ( not a new record just an 2nd-update )

现在,当我使用与"JOHN"相同的"PAUL"更新名称时,我希望获得cus_name值"JOSE",并将值设为"PAUL"

请建议我查询相同的内容。

非常感谢你的时间。

3 个答案:

答案 0 :(得分:1)

如果您想访问以前的值,您有两个选择。

  1. 使用版本号和时间戳列设计表,以便始终可以获取最新版本以及该行的任何先前版本。您必须将更新操作更改为插入,可能在应用程序代码中或使用触发器。如果表经常更新,这可能会导致表变得非常大。
  2. 使用第二个表存储更新行的先前版本。该表将需要版本号(并可能更新时间戳)。这种方法的优点是,随着更新的累积,具有“当前”数据的主表将不会经历无限增长。这也可以通过触发器或在您的应用程序中完成。
  3. 您选择哪一个取决于更新的频率以及访问“旧”记录的频率。

答案 1 :(得分:1)

你应该在db中添加一个colum并使用time()插入当前时间;功能。这样你就可以轻松识别哪一个更老。另一个解决方案是将数据库中的日期结构从date更改为DATETIME,以便您轻松查看..

CREATE TABLE IF NOT EXISTS `customer_record` (
`si.no` int(11) NOT NULL,
`cus_name` varchar(255) NOT NULL,
`date` DATETIME NOT NULL,
`status` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

答案 2 :(得分:0)

简单来说,在表格中添加一个auto_increment字段。要获取最后一个值,只需选择,按降序限制1的auto_increment字段排序。