向有主键的表中批量插入记录,如果主键重复会报错,现在想主键重复时更新这条记录,请问怎么做,用触发器吗?我搞了半天没搞定

解决方案 »

  1.   

    create table t1(cid int,cname varchar2(100));
    insert into t1 values (1,'1');
    create table t2(cid int,cname varchar2(100));
    insert into t2 values(1,'3');        
    insert into t2 values(2,'4');        
    --执行语句
    MERGE INTO t1 a
        USING t2 b 
        on (a.cid=b.cid)
        WHEN MATCHED  THEN
            UPDATE SET a.cname=b.cname
        WHEN NOT MATCHED THEN
            INSERT (a.cid,a.cname ) VALUES ( b.cid,b.cname );
    --执行结果
    select * from t11 3
    2 4