MySQL存储:存档数据的最佳方式

时间:2013-03-25 11:08:13

标签: php mysql

我在SQL领域很安静。因此,我有一种工作方式。

每周,我都会通过pHp代码从MySQL数据库中的Excel电子表格发送数据。这已经有效了。因此,我有一张表可以更新。

实际上我在我的数据库上发送特定底层证券的价格。将数据存档的最佳方法是:

在我的数据库中,我有以下结构:

tabe t_index
Label = VARCHAR(255)
Price = float
Date = date()

假设我上周在db上发送了数据,因此我存储了:

Stock A
102.85
2013-03-18

今天,我想为同一Stock A 103.54发送新价格,但我想存档并保留102.85价格以便能够返回或无论两种价格如何。

我该怎么办?

我希望我的问题不会太乱...... 谢谢你的帮助

2 个答案:

答案 0 :(得分:4)

这样做的一种方法是,创建一个UPDATE触发器,在另一个表中插入旧值。因此,当您更新现有条目时,旧数据将被复制/存档到另一个表。

CREATE TABLE t_index_archive (
Label VARCHAR(255),
Price float,
Date datetime);

现在在现有表格上创建一个触发器

DROP TRIGGER IF EXISTS archive_t_index;
DELIMITER $$
CREATE DEFINER = CURRENT_USER TRIGGER archive_t_index BEFORE UPDATE ON t_index
     FOR EACH ROW BEGIN 
          INSERT INTO t_index_archive VALUES (OLD.Label, OLD.Price, OLD.Date);
     END;
$$
DELIMITER ;

答案 1 :(得分:0)

您可以添加另一个名为is_active ENUM类型的列,其值为active,inactive

默认情况下,is_active的值为'active'

当您在数据库中输入新条目时,只需使用is_active更新旧条目'inactive',然后添加新条目

使用where子句WHERE is_active='active'

使用查询获取新数据