Oracle里通過(guò)merge語(yǔ)句判斷重復(fù)插入
導(dǎo)讀:Oracle數(shù)據(jù)庫(kù)功能比較齊全,在數(shù)據(jù)庫(kù)業(yè)界也算是名氣不小的的數(shù)據(jù)庫(kù)系統(tǒng)啦。由于項(xiàng)目中需要用到批量插入,為了防止用戶插入重復(fù)的數(shù)據(jù),需要先判斷插入的數(shù)據(jù)是不是已經(jīng)存在,如果存在則忽略這次插入,否則插入這條數(shù)據(jù),剛開(kāi)始的時(shí)候是先用一條SQL語(yǔ)句判斷,如果返回結(jié)果是真(記錄已經(jīng)存在),則忽略,否則插入這條數(shù)據(jù),這樣的話插入一條數(shù)據(jù)就要發(fā)起兩個(gè)到數(shù)據(jù)庫(kù)的連接,后來(lái)發(fā)現(xiàn)這樣做效率實(shí)在太低了,搜索了一下,發(fā)現(xiàn)oracle數(shù)據(jù)庫(kù)支持merge語(yǔ)句,做了個(gè)測(cè)試,成功了,記錄下來(lái)供大家參考。
數(shù)據(jù)庫(kù):TEST
1 CREATE TABLE TEST(
2 ID NUMBER NOT NULL,
3 NAME VARCHAR2(30) NOT NULL,
4 SEX VARCHAR2(2) DEFAULT '男'
插入兩條數(shù)據(jù):
1 INSERT INTO TEST VALUES(1,'SUNZHENXING','男')
2 INSERT INTO TEST VALUES(2,'SUNHAILONG','女')
MERGE語(yǔ)句:
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語(yǔ)句中的UPDATE語(yǔ)句和INSERT語(yǔ)句和一般的SQL語(yǔ)句格式有點(diǎn)不同
上文中的內(nèi)容是從工作中總結(jié)出來(lái)的,如有什么不妥的地方還望大家見(jiàn)諒,希望對(duì)大家能夠有所幫助。
【編輯推薦】