• oracle 中 Merge into 新增更新语句


    适用场景:oracle 中判断数据是否存在如果存在即更新反之新增 (提高效率)

    语法:

    MERGE INTO table_name alias1 
    USING (table|view|sub_query) alias2
    ON (join condition) 
    WHEN MATCHED THEN 
    UPDATE table_name 
    SET col1 = col_val1, 
    col2 = col_val2 
    WHEN NOT MATCHED THEN 
    INSERT (column_list) VALUES (column_values);
    
    --业务介绍:产品表中如果存在产品编号id为7的则将订单名称改为00005不存在则新增
    merge into CM_CU_PRODUCT_COPY a
    using (select '7' as pid from dual) s
    on (a.pid = s.pid)
    when matched then
    update set a.order_name = '00005'
    when not matched then
    insert (PID, order_name, order_id,create_time) values ('7', '00005', '2',sysdate)

    注意事项:

    1、 USING () 这里面的子查询请使用dual 伪表且保证有数据,不存在数据的时候meger into 将不会执行insert / update 操作

    2、更新的字段不能是on 中关联的字段 会报错。 也就是说改变上面的例子为 update set a.id ='xxxx'就会报错

  • 相关阅读:
    kioptrix-1
    4.4 CSRF
    upload-labs 练习笔记
    4.3 XSS
    外国人是怎样读编程书的呢?
    如何快速学习新语言
    Go开发环境配置
    Golang Package I
    MVC模式小结
    Flask基础知识
  • 原文地址:https://www.cnblogs.com/lanSeGeDiao/p/11806683.html
Copyright © 2020-2023  润新知