这个问题整整纠结我一个上午,关键问题不是没有方法而是方法不对!
我最初是按照这个方法:
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 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)
个人测试是正确的,如果哪位网友发现了错误,请通知本人,本人好进行更正,以防让更多的人看到错误的方法!
谢谢!
原文:http://blog.csdn.net/gufeilong/article/details/20373077