這個問題整整糾結我一個上午,關鍵問題不是沒有方法而是方法不對!
我最初是按照這個方法:
http://www.cnblogs.com/sunzhenxing19860608/archive/2010/10/19/1855823.html
怎麼試都沒有辦法插入數據,只能更新成功!請教了別人之後才發現這個方法是不對的!
借鑒上面的例子:
數據庫表: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 INTO TEST A USING (select '3' as ID,'SUNZHENXING' as NAME,'女' as SEX from Test )B ON (A.NAME=B.NAME) WHEN MATCHED THEN UPDATE SET A.SEX=B.SEX WHERE A.NAME=B.NAME WHEN NOT MATCHED THEN INSERT VALUES (B.ID,B.NAME,B.SEX)這裡的表B是個虛表,不能直接用A表來代替,只有通過查詢得到是否存在這條數據之後才可以進行判斷這條數據是否存在!
個人測試是正確的,如果哪位網友發現了錯誤,請通知本人,本人好進行更正,以防讓更多的人看到錯誤的方法!
謝謝!