由于項目中需要用到批量插入,為了防止用戶插入重復(fù)的數(shù)據(jù),需要先判斷插入的數(shù)據(jù)是不是已經(jīng)存在,如果存在則忽略這次插入,否則插入這條數(shù)據(jù),剛開始的時候是先用一條SQL語句判斷,如果返回結(jié)果是真(記錄已經(jīng)存在),則忽略,否則插入這條數(shù)據(jù),這樣的話插入一條數(shù)據(jù)就要發(fā)起兩個到數(shù)據(jù)庫的連接,后來發(fā)現(xiàn)這樣做效率實在太低了,Google了一下,發(fā)現(xiàn)oracle數(shù)據(jù)庫支持merge語句,做了個測試,成功了,記錄下來供本人及同行以后查閱之用。
數(shù)據(jù)庫: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語句:
1 |
MERGE INTO TEST A USING TEST B |
4 |
UPDATE SET A.SEX= '女' WHERE A. NAME = 'SUNZHENXING' |
6 |
INSERT VALUES (3, 'SUNZHENXING' , '女' ) |
需要注意的是:MERGE語句中的UPDATE語句和INSERT語句和一般的SQL語句格式有點不同,^_^。
|