我有一个子表,比如100条记录,中间有可能要判断表里是否已经有相同的记录,已经存在的记录就更新,不存在的就插入,想要一次性保存,该如何操作。

解决方案 »

  1.   

    先删除的话如果是自动编号的值就会变了,其它表会有用到这个表的值。有没有像asp那种 rs.update,不要用一百次 insert into 语句。
      

  2.   

    // 使用存储过程来好点,传入指定的条件循环No之类的,然后判断是否存在//2楼:可以加上事务,加不加都无所谓//3楼:个人认为,删除掉再新增,如果数据频繁操作的话对表自动生成ID不太好。
      

  3.   

    就是说每增加一条都要用到insert into 了, 没有用dataset 一次性更新的吗
      

  4.   

    如果是用oracle的话,可以用marge intoMERGE 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
        WHERE p.category = 'DVD'
        WHEN NOT MATCHED THEN
        INSERT
        VALUES (np.product_id, np.product_name, np.category)
        WHERE np.category != 'BOOKS'
    具体用法可以在网上找到
      

  5.   

    感觉没有asp中的批量更新的方法好用,就只能insert intoasp中可以一直rs.update 
      

  6.   

    CREATE   TRIGGER   T_表A   on   表A 
    FOR   UPDATE
    AS
    BEGIN
    SET   xact_abort   ON 
    BEGIN   TRANDECLARE   @i   INT
    select   @i=count(*)   from     Inserted   I   inner   join   表A   A   on   I.A2=A.A2   and   I.A3=A.A3 
      if   @i> 1 
    BEGIN
           UPDATE …………
    END COMMIT  tran 
    END 上面的只是个样子  改成你需要的就可以了