在插入表格时自动保存某些行的选项有哪些?

时间:2016-10-03 22:54:37

标签: mysql sql

我有一个名为 Analysis_Data 的表,用于存储基于代码分析的软件代理生成的指标数据。 代理会自动将指标插入 Analysis_Data 表,并从先前的分析中删除一些指标。但是,我想保留 Analysis_Data 表中的所有数据。

mysql中是否有任何机制可以自动将新插入的行从 Analysis_Data 表复制到另一个表 Saved_Data ,以便即使代理会在以后的分析周期中删除行吗?

我正在使用mysql版本14.14 distrib 5.7.13。

2 个答案:

答案 0 :(得分:2)

您可以使用触发器:http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

代码和插入触发器之后作为https://www.techonthenet.com/mysql/triggers/after_insert.php

中的示例

这样的事情:

DELIMITER //

CREATE TRIGGER Back_Analysis_Data 
AFTER INSERT
   ON Analysis_Data FOR EACH ROW

BEGIN

   INSERT INTO Saved_Data ( Col1, Col2 )
   VALUES ( NEW.Col1, NEW.Col2 );

END; //

DELIMITER ;

答案 1 :(得分:1)

我建议不要使用触发器和存储过程,因为它们不会扩展。创建第二个表只是MySQL的额外维护和存储开销。

最佳做法是在客户端代码上实现软删除。为此,您需要在Analysis_Data中添加一个名为" soft_delete"的附加列。像这样:

ALTER TABLE Analysis_Data ADD COLUMN soft_delete TINYINT NOT NULL DEFAULT 0 添加密钥soft_delete_key(soft_delete

然后您的查询读取未删除的数据 select * from Analysis_Data where soft_delete!= 0 limit 10

一起读取已删除/未删除的数据 select * from Analysis_Data limit 10