添加新数据后,有没有一种方法可以在MySQL中自动执行DELETE和INSERT?

时间:2018-10-19 17:04:57

标签: mysql amazon-rds

我是整个数据库管理游戏的新手,所以如果我对此完全不了解,并且有更好的方法可以做到这一点,请告诉我。

我有一个R脚本,可用于将一堆每周报告汇总到一个表中。我正在尝试在MySQL中设置数据存储,但是不确定如何使INSERT自动工作。

R的输出表是一周的数据。

现在,我在MySQL中有两个表,我们将它们称为MainNewWeek

NewWeek是我从R发送输出的地方,我实际上需要这样做:

/* delete any data already imported from NewWeek */
DELETE FROM Main
WHERE Main.`Date` = (SELECT max(Date) FROM NewWeek);

INSERT INTO Main Select * FROM NewWeek;

而且,我每次更改NewWeek(即,每次运行R脚本)时都需要运行该查询,由于我们获取了更多数据,因此可能需要在一周内多次运行插入操作,因此需要DELETE语句,以确保我们不会创建重复项。

我正在通过Amazon RDS运行MySQL,我相信这会给使用触发器带来一些挑战,因此我不确定这是否是一个选择。

1 个答案:

答案 0 :(得分:0)

当您开始随机移动表之间的(相等)数据时,数据库布局很可能出了点问题。

在您的情况下,我建议以下内容:

  • 将记录的数据直接插入到主表中,而无需“周表”。
  • 如果您需要区分这些条目,请在查询数据时使用动态的最小/最大日期(如您所做的那样),或者有关数据批准的信息,请使用布尔列(批准的是/否)。

因此,每条“记录”都将添加“ approved = false”-每周一次,当您对数据感到满意时,您只需将该列更新为“ true”即可。