【发布时间】:2014-07-30 21:01:01
【问题描述】:
假设我有这个 SQL 语句:
INSERT INTO MYTABLE
select A.code,B.name,C.add
from codes A
left join names B on A.fid=B.id
left join addresses C on B.num=C.id
where A.datechanged>somedate;
这会为 A 中被修改的每一行添加新记录。我希望它还跟踪 B 和 C 的变化,例如,如果 B.datechanged>somedate 为 true 但 A.datechanged>somedate 为 false,则仍会添加新行。
换句话说,我希望它从所有三个表中提取数据,如果 datechanged>somedate 任何表,而不仅仅是 A。我该怎么做?我打算在 FROM 子句中对不同的表重复相同的语句,但我有大约 10 个要连接的表。有没有更好的方法来做到这一点?
【问题讨论】:
-
在每个表上触发,该表调用一个在所有 3 个“日志”表中插入记录的过程。
-
您正在构建源代码控制吗? - 那里有免费工具
-
也许我遗漏了一些东西,但您不只是想要
OR的多个条件,即where a.datechanged > somedate OR b.datechanged > somedate OR c.datechanged > somedate。 -
不,我正在为数据仓库做 ETL。 @xQbert您的意思是在A,B,C中更新触发器以加入其余表并在MYTABLE中插入新记录吗?如果可能的话,我宁愿避免使用触发器,这似乎只是为每个表重复相同代码的另一种方式..除非我误解了你