zoukankan      html  css  js  c++  java
  • merge同时包含增、改、删

    我们都知道oracle merge可以用来增和改,很少用它来删除。但是有时候我们仍然需要该特性,以提高性能,典型的场景就是将业务库逻辑删除的记录同步到查询库的时候,做真正的物理删除,这个时候merge的delete子句就再恰当不过了。如下所示:

    MERGE INTO A
    USING (EMPLOYEE) B
    ON (A.EMPLOYEEID = B.EMPLOYEEID AND A.YEAR = B.YEAR)
    WHEN MATCHED THEN
    UPDATE SET balance = b.balance
    DELETE WHERE b.is_deleted = '1'

    特别说明:
    DELETE字句只能写在MATCHED情况中,不匹配时无法删除会报错。
    当DELETE跟在UPDATE字句之后时,DELETE字句是针对UPDATE字句修改后的数据进行过滤的。比如需要删除所有C字段="1"的数据,UPDATE字句将所有数据的C字段都更新为1,那么会删除所有数据,而不是原本为1的数据。

    但是在jdbc的addbatch上,似乎merge的支持不像mysql那么直接,需要先insert临时表,然后merge,这样的效率最佳。

  • 相关阅读:
    判断微信浏览器
    文章迁移
    ECharts使用—折线图动态加载
    vue-cli入门
    gulp使用详解
    gulp使用入门
    Chrome扩展插件流程
    div界面元素生成图片
    xss攻击与防御
    bootstrap-table使用详解
  • 原文地址:https://www.cnblogs.com/zhjh256/p/11173260.html
Copyright © 2011-2022 走看看