vs2005 c# asp.net 中 Oracle客户端的数据表

id    name
A1    信息B2    工艺
(id 为主键,name可以null)

解决方案 »

  1.   

    DECLARE
    num int := 0;
    BEGIN
      SELECT COUNT(1) INTO num FROM tb WHERE id = 'A1';
      IF num1 = 0 THEN
        INSERT .....
      END IF;
    END;
      

  2.   

    第一感觉是使用触发器,但是比起触发器,为什么不在插入前先在程序里面用
    select count(*) from tablename where id = insertid判断一下,如果返回0则插入如果返回1就不插入
      

  3.   

    建议楼主用这个办法!select count(*) into l_cnt from tablename where id = insertid
    if l_cnt=0
      insert into tablename values(1,2,3...)
    end
       
      
      

  4.   

    用MERGE 具体怎么用自己GOOGLE一下
      

  5.   

    MERGE INTO products p
         USING newproducts np
        ON (p.product_id = np.product_id)
        WHEN MATCHED THEN
        UPDATE
        SET p.product_name = np.product_name,
        p.category = np.category
        WHEN MATCHED THEN
        INSERT INTO  products VALUES(....)
      

  6.   

    有主键id的话。可以直接insert呀,没有主键重复的话,成功就成功,有主键冲突的就失败,就不成功你只需要catch住exception,不做任何处理了就可以了呀。自己来控制的话,需要自己去考虑并发的问题。而且也一样避免不了这样的情况发生,除非牺牲性能,做表级锁。
      

  7.   


    先判断是否存在该条记录(SQL语句:select count(*) from 表名 where 条件),如果不存在,则插入记录
      

  8.   


    MERGE INTO 最简单、简洁方法
      

  9.   

    用merge,在循环中动态替换select 1 as newid,'val' as newname from dual:
    example 如下:
    merge into t 
    using (select 1 as newid,'name1' as newname from dual) newData
    ON (t.id=newData.newid)
    WHEN NOT MATCHED THEN
    INSERT
    VALUES (newid,newval)
    WHEN MATCHED THEN
    UPDATE
    SET t.name=newData.newname;