0

我是 SQL 领域的新手。因此,我有一个工作问题的方式。

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

实际上,我正在我的数据库中发送特定基础的价格。如下存档我的数据的最佳方法是什么。

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

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

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

Stock A
102.85
2013-03-18

今天,我想发送相同的新价格Stock A103.54但我想存档并保留102.85价格,以便能够在两个价格之间获得一些回报或任何东西。

我应该如何进行?

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

4

2 回答 2

5

这样做的一种方法是,创建一个 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 ;
于 2013-03-25T11:16:49.540 回答
0

您可以添加另一列名为is_activeENUM 类型的值active,inactive

默认情况下is_active的值将是'active'

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

使用 where 子句查询获取新数据WHERE is_active='active'

于 2013-03-25T11:21:26.123 回答