導讀:Oracle數據庫功能比較齊全,在數據庫業界也算是名氣不小的的數據庫系統啦。由於項目中需要用到批量插入,為了防止用戶插入重復的數據,需要先判斷插入的數據是不是已經存在,如果存在則忽略這次插入,否則插入這條數據,剛開始的時候是先用一條SQL語句判斷,如果返回結果是真(記錄已經存在),則忽略,否則插入這條數據,這樣的話插入一條數據就要發起兩個到數據庫的連接,後來發現這樣做效率實在太低了,搜索了一下,發現Oracle數據庫支持merge語句,做了個測試,成功了,記錄下來供大家參考。
數據庫:TEST
1 CREATE TABLE TEST(
2 ID NUMBER NOT NULL,
3 NAME VARCHAR2(30) NOT NULL,
4 SEX VARCHAR2(2) DEFAULT '男'
插入兩條數據:
1 INSERT INTO TEST VALUES(1,'SUNZHENXING','男')
2 INSERT INTO TEST VALUES(2,'SUNHAILONG','女')
MERGE語句:
1 MERGE INTO TEST A USING TEST B
2 ON (A.NAME=B.NAME)
3 WHEN MATCHED THEN
4 UPDATE SET A.SEX='女'WHERE A.NAME='SUNZHENXING'
5 WHEN NOT MATCHED THEN
6 INSERT VALUES (3,'SUNZHENXING','女')
需要注意的是:MERGE語句中的UPDATE語句和INSERT語句和一般的SQL語句格式有點不同
上文中的內容是從工作中總結出來的,如有什麼不妥的地方還望大家見諒,希望對大家能夠有所幫助。