【发布时间】:2019-09-14 13:01:19
【问题描述】:
我想在每天 12 点将所有数据从原始表复制到重复表。如果我这样做了,那么发生的任何更改都应该反映在重复表中......就像我们添加应该添加到重复表中的新行......更重要的是,如果我们更改原始表中的任何列也应该反映在重复表中而不添加新行现有的行属性值应该改变。
@Override
public void insertDataToTableAtBegining() {
Query itemQuery1 = entitymanager.createNativeQuery("INSERT graph_item SELECT * FROM item WHERE order_id IS NOT NULL");
log.info("Inserting is completed where count is ZERO for item");
itemQuery1.executeUpdate();
Query orderQuery1 = entitymanager.createNativeQuery("INSERT graph_mrk_order SELECT * FROM mrk_order");
log.info("Inserting is completed where count is ZERO for order");
orderQuery1.executeUpdate();
}
@Override
public void insertDataToTable(Date beg, Date end) {
Query itemQuery1;
itemQuery1 = entitymanager.createNativeQuery("INSERT graph_item SELECT * FROM item WHERE create_timestamp BETWEEN '" + beg +"' AND '"+ end +"' WHERE order_id IS NOT NULL");
log.info("Inserting is completed in Daily for item");
itemQuery1.executeUpdate();
Query orderQuery1;
orderQuery1 = entitymanager.createNativeQuery("INSERT graph_mrk_order SELECT * FROM mrk_order WHERE create_timestamp BETWEEN '" + beg +"' AND '"+ end +"'");
log.info("Inserting is completed in Daily for order");
orderQuery1.executeUpdate();
}
【问题讨论】:
-
与您的 DBA 交谈,让 DBA 人员处理此问题。不要从 java 代码中执行此操作。此外,您的代码很危险并且无法正常工作,永远不要使用 String concat 创建查询。
-
如果您要尝试不断更新“重复”表并与源表保持同步,那么“每日重复”的目的是什么?就此而言,重复表的目的是什么?
-
我们必须显示当前日期的静态图。
标签: java mysql oracle spring-boot jpa