sql文,向表中插入数据,如果主键(PK)冲突,则执行更新操作,这个sql怎么写啊!谢谢

解决方案 »

  1.   

    如果9i以后的版本,用merge效率最高。
      

  2.   

    create or replace procedure p_1(
    pk in tb.id%type,col in tb.colname%type) 
    asbegin
    if exists(select 1 from tb where id=pk) then
    update tb set colname=col where id=pk;
    else
    insert into tb values(pk,col)
    end if ;
    end;
      

  3.   

    MERGE INTO target_table D
       USING (SELECT col1, col2, col3_id... FROM source_table
       WHERE ...) S
       ON (D.pk_col = S.col1)
       WHEN MATCHED THEN UPDATE SET D.col2= s.col2...
       WHEN NOT MATCHED THEN INSERT (D.col2, D.col3)
       VALUES (S.col2, S.col3);