zoukankan      html  css  js  c++  java
  • oracle中利用merge语句防止重复插入

    由于项目中需要用到批量插入,为了防止用户插入重复的数据,需要先判断插入的数据是不是已经存在,如果存在则忽略这次插入,否则插入这条数据,刚开始的时候是先用一条SQL语句判断,如果返回结果是真(记录已经存在),则忽略,否则插入这条数据,这样的话插入一条数据就要发起两个到数据库的连接,后来发现这样做效率实在太低了,Google了一下,发现oracle数据库支持merge语句,做了个测试,成功了,记录下来供本人及同行以后查阅之用。

    数据库:TEST

    CREATE TABLE TEST( 
        ID  	NUMBER NOT NULL,
        NAME	VARCHAR2(30) NOT NULL,
        SEX 	VARCHAR2(2) DEFAULT '男' 
    )
    
    插入两条数据:

    INSERT INTO TEST VALUES(1,'SUNZHENXING','男')
    INSERT INTO TEST VALUES(2,'SUNHAILONG','女')
    
    MERGE语句:

    MERGE INTO TEST A USING TEST B 
    ON (A.NAME=B.NAME)
    WHEN MATCHED THEN
    UPDATE SET A.SEX='女'WHERE A.NAME='SUNZHENXING'
    WHEN NOT MATCHED THEN 
    INSERT VALUES (3,'SUNZHENXING','女')
    
    需要注意的是:MERGE语句中的UPDATE语句和INSERT语句和一般的SQL语句格式有点不同,^_^。

  • 相关阅读:
    JS异错面试题
    CSG
    OBS工具汇总
    SFS OBS
    zookeeper配置文件
    zookeeper概念
    centos yum源问题三板斧
    nexus仓库
    SVN备份恢复
    ubuntu
  • 原文地址:https://www.cnblogs.com/sunzhenxing19860608/p/1855823.html
Copyright © 2011-2022 走看看