我有一个数据传输工具,可以将信息从一个数据库传输到另一个数据库。它每小时都会对表中的所有行发出UPDATE。我已经有一个INSERT触发器将来自该表的数据转储到许多其他表中。我添加了一个UPDATE触发器来编辑其他表,但它正在使额外的处理使整个UPDATE进程运行缓慢。
我想将UPDATE触发器的主体包装在比较旧行和新行的IF语句中,如果没有任何更改则跳过处理。是否可以将整行与另一行进行比较,如下所示?
IF new = old THEN ...
或者除了单独检查每一列之外别无选择吗?
答案 0 :(得分:0)
可悲的是,不,你需要单独比较每一列。可能不是你希望得到的答案。
答案 1 :(得分:0)
如果速度是这里的问题,我会保存上次编辑的时间戳或校验和。
使用后一种方法,如果您有一个包含三行A
,B
和C
的表,我会修改此方案以包含一个新行{{1} }。
每当您插入某些内容时,您都会在cksum
中插入使用快速哈希算法生成的值,例如MD5。这个校验和可能类似于
cksum
这样,每当必须插入内容时,您只需要与checksum = MD5(A + B + C);
字段进行比较。