我在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
价格以便能够返回或无论两种价格如何。
我该怎么办?
我希望我的问题不会太乱...... 谢谢你的帮助
答案 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'