由于項(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í)在太低了,Google了一下,發(fā)現(xiàn)oracle數(shù)據(jù)庫(kù)支持merge語(yǔ)句,做了個(gè)測(cè)試,成功了,記錄下來(lái)供本人及同行以后查閱之用。
數(shù)據(jù)庫(kù):TEST
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 |
4 |
UPDATE SET A.SEX= '女' WHERE A. NAME = 'SUNZHENXING' |
6 |
INSERT VALUES (3, 'SUNZHENXING' , '女' ) |
需要注意的是:MERGE語(yǔ)句中的UPDATE語(yǔ)句和INSERT語(yǔ)句和一般的SQL語(yǔ)句格式有點(diǎn)不同,^_^。
|