0

我想知道我的 MYSQL DB 中以前更新的值。

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 )

现在我想获得 cus_name 值,当我用相同"JOHN"的名称更新名称时,应该将值作为."PAUL""JOSE""PAUL"

请建议我对相同的查询。

非常感谢您的时间。

4

3 回答 3

1

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

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

您选择哪一个将取决于更新频率以及访问“旧”记录的频率。

于 2012-09-28T05:04:15.380 回答
1

您应该需要在 db 中再添加一列并使用 time() 插入当前时间;功能。这样您就可以轻松识别哪个更旧。另一种解决方案是将数据库中的日期结构从更改为dateDATETIME以便您可以轻松检查..

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;
于 2012-09-28T05:11:49.320 回答
0

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

于 2012-09-28T05:22:03.660 回答