1

很难把它变成一个句子的问题。这是前提:

我有两个结构如下的表:

create table TableA(
id int, <-- this is a unique ID in TableA but not in TableB
value1 int,
value2 int,
value3 int,
value4 int,
value5 int,
value6 int,
update_time DATETIME
)

create table TableB(
id int,
value1 int,
value2 int,
value3 int,
value4 int,
value5 int,
value6 int,
update_time DATETIME
)

TableA有 100,000 行数据(API 响应的最新副本)。每隔一小时,API 就会返回每个 ID 的新数据,TableA并且 API 响应TableA会使用每个唯一 ID 的最新数据进行更新。随着时间的推移,所有响应都会保存到TableB数据分析中(因此每小时会添加 100,000 行TableB。)。但是,并非所有数据每小时都会更改。事实上,大部分数据根本没有变化。

以下是我想构造它的方式:假设 API 返回数据 forid = 432并且所有值都相同,除了value4value4包含 505043(而不是当前存储在TableAfor中的值 505000 id=432)。我想取 505043 - 505000 = 43 并将其存储到TableB

INSERT INTO TableB (id, value6) VALUES (432, 43)

实现这一目标的最有效方法是什么?我最初的想法是从TableAPHPcron脚本中检索数据,计算数据差异(如果有的话),然后相应地构造插入语句。但是由于这个过程每秒会发生很多次,所以我想确保我使用的是最有效的方法。

提前致谢。

4

1 回答 1

0

每当在 TableA 中插入或更新行时,您可以创建一个触发器,将行插入到 TableB 中。

下面是一个示例,说明每当在另一个表中插入一行时,如何使用触发器将行插入到表中。

于 2013-04-07T15:10:05.833 回答