MySQL:比较整行

时间:2012-01-18 20:56:44

标签: mysql triggers sql-update

我有一个数据传输工具,可以将信息从一个数据库传输到另一个数据库。它每小时都会对表中的所有行发出UPDATE。我已经有一个INSERT触发器将来自该表的数据转储到许多其他表中。我添加了一个UPDATE触发器来编辑其他表,但它正在使额外的处理使整个UPDATE进程运行缓慢。

我想将UPDATE触发器的主体包装在比较旧行和新行的IF语句中,如果没有任何更改则跳过处理。是否可以将整行与另一行进行比较,如下所示?

IF new = old THEN ...

或者除了单独检查每一列之外别无选择吗?

2 个答案:

答案 0 :(得分:0)

可悲的是,不,你需要单独比较每一列。可能不是你希望得到的答案。

答案 1 :(得分:0)

如果速度是这里的问题,我会保存上次编辑的时间戳或校验和。

使用后一种方法,如果您有一个包含三行ABC的表,我会修改此方案以包含一个新行{{1} }。

每当您插入某些内容时,您都会在cksum中插入使用快速哈希算法生成的值,例如MD5。这个校验和可能类似于

cksum

这样,每当必须插入内容时,您只需要与checksum = MD5(A + B + C); 字段进行比较。