oracle批量新增数据,如果有指定字段相同的数据,则更新

<insert id="batchAddStorage">
        MERGE INTO COMPUTER_GOODS_STORAGE t1
        USING (
        <foreach collection="list" item="item" index="index" separator="union" >
            select
            #{item.id} id,
            #{item.selfNo} selfNo,
            #{item.commodityName} commodityName,
            #{item.goodsName} goodsName,
            #{item.modelSpec} modelSpec,
            #{item.mainConfiguration} mainConfiguration,
            #{item.unit} unit,
            #{item.num} num,
            #{item.baseNum} baseNum,
            #{item.purchaseTotalPrice} purchaseTotalPrice
            from dual
        </foreach>) t2
        ON (
        t1.SELF_NO =  t2.selfNo
        )
        WHEN MATCHED THEN
        UPDATE SET t1.NUM = t2.num+t1.NUM,t1.PURCHASE_TOTAL_PRICE = t2.purchaseTotalPrice+t1.PURCHASE_TOTAL_PRICE,
        t1.UNIT = t2.unit,t1.MAIN_CONFIGURATION = t2.mainConfiguration,t1.COMMODITY_NAME = t2.commodityName
        WHEN NOT MATCHED THEN

INSERT
        (ID,SELF_NO, COMMODITY_NAME, GOODS_NAME, MODEL_SPEC, MAIN_CONFIGURATION, UNIT,NUM,BASE_NUM,PURCHASE_TOTAL_PRICE)
        VALUES
        (t2.id,t2.selfNo, t2.commodityName, t2.goodsName, t2.modelSpec, t2.mainConfiguration, t2.unit,t2.num,t2.baseNum,t2.purchaseTotalPrice)
    </insert>


 说明:如果传入的字段值 t2.selfNo 的值在表中已存在相同的值(t1.SELF_NO =  t2.selfNo),则批量更新指定字段(UPDATE SET t1.NUM = t2.num+t1.NUM,t1.PURCHASE_TOTAL_PRICE = t2.purchaseTotalPrice+t1.PURCHASE_TOTAL_PRICE,
        t1.UNIT = t2.unit,t1.MAIN_CONFIGURATION = t2.mainConfiguration,t1.COMMODITY_NAME = t2.commodityName)否则则批量插入数据(INSERT
        (ID,SELF_NO, COMMODITY_NAME, GOODS_NAME, MODEL_SPEC, MAIN_CONFIGURATION, UNIT,NUM,BASE_NUM,PURCHASE_TOTAL_PRICE)
        VALUES
        (t2.id,t2.selfNo, t2.commodityName, t2.goodsName, t2.modelSpec, t2.mainConfiguration, t2.unit,t2.num,t2.baseNum,t2.purchaseTotalPrice))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle是关系型数据库管理系统,是目前全球广泛使用的商业级数据库之一。在Oracle数据库管理系统中,插入操作是向表中插入新行(也就是新增数据)的一项基本操作,可以使用INSERT语句实现。对于批量新增数据,我们可以通过以下方法实现: 方法一,使用INSERT INTO VALUES语句:这种方法适用于需要批量新增数据已经存储在一个文件或程序中。我们可以编写一个程序,将需要新增数据一条一条地按照INSERT INTO VALUES的格式拼接起来,并执行这些INSERT语句,将数据插入到数据库表中。 方法二,使用INSERT INTO SELECT语句:这种方法适用于需要批量新增数据来源于另一个表格。我们可以编写一个SELECT语句,从原始表格中选择需要新增数据,并将结果填入我们需要更新的表格中。这种方法可以在很短的时间内完成大量数据新增工作。 无论使用哪种方法,批量新增数据时需要注意以下几点: 1. 数据的正确性:在执行批量新增操作前,必须确保新增数据与要求一致,例如数据类型、数据长度等。 2. 数据的唯一性:在执行批量新增操作时,必须确保新增数据在表格中不会出现重复。可以使用联合主键或唯一索引等手段保证数据的唯一性。 3. 事务控制:在执行批量新增操作时,需要考虑到是否需要使用事务控制。如果新增过程中出现错误,需要回滚操作,保证数据的完整性。 总之,Oracle批量新增数据insert操作是数据库管理系统中经常使用的操作之一,灵活运用可以提高工作效率和数据处理的准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值