插入一个表,条件是如果插入的数据与该表指定字段相同则不操作,如果在相应字段下没有相同的数据则执行插入。
写了个sql 貌似不对,我该怎么写?insert into CC_FRIEND (FRIEND_NAME,FRIEND_ADDRESS,FRIEND_ZIP_CODE,FRIEND_PHONE,FRIEND_FAX,FRIEND_EMAIL,FRIEND_HOMEPAGE,FRIEND_NAME_EN,FRIEND_CONTACT) 
values('易趣','上海','020','111','123','[email protected]','www.yicu.com','yiqu','gab') where '易趣' not in (select FRIEND_NAME from CC_FRIEND);数据都是模拟的......

解决方案 »

  1.   

    就是说看上面的语句,如果CC_FRIEND表中的FRIEND_NAME为易趣的话插入就不执行,否则就执行.....
      

  2.   

    就是判断在改变中FRIEND_NAME是否已存在了要插入的数据,如果有就不插入,没有则插入
      

  3.   

    DBA已经把主键好了 不能改了 就看sql怎么写了 主键一般不都是id么?不会用业务相关的NAME作为主键把?
      

  4.   

    create or replace procedure proc_test 
    (  v_FRIEND_NAME IN CC_FRIEND.FRIEND_NAME%type,
       v_FRIEND_ADDRESS IN CC_FRIEND.FRIEND_ADDRESS%type,
       ..
    )
    is 
       v_flag number := 0;
    begin 
       select count(1) into v_flag from CC_FRIEND where FRIEND_NAME = v_FRIEND_NAME;
       if v_flag = 0 then
          insert into CC_FRIEND...;
       end if;
    end proc_test;
    /
      

  5.   

    刚知道DBA把name设为unique了。。 whatever 谢谢大家了!