SQLServer Merge语句执行没有错误,有部分数据没有插入到库

雪狐 2020-12-05 03:29:04
急求各位大佬!!!

SQLServer版本
Microsoft SQL Server 2014 - 12.0.2000.8 (X64) Feb 20 2014 20:04:26 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

开发框架及版本
<mybatis-plus.version>3.1.0</mybatis-plus.version>
<sqlserver.version>7.4.1.jre8</sqlserver.version>
<druid.version>1.1.23</druid.version>
<springboot.dynamic-datasource.version>3.0.0</springboot.dynamic-datasource.version>

执行的语句:
<update id="batchMerge" parameterType="xxxx.Entity">
MERGE INTO etl_device_realtime_history AS t USING(VALUES
<foreach collection ="list" item="item" separator =",">
(#{item.deviceId}, #{item.catagoryId}, #{item.collectTime}, #{item.enname}, #{item.fixedTime},
#{item.dataValue}, #{item.externalProducerId}, #{item.deviceSource})
</foreach>
) AS s(
device_id, catagory_id, collect_time, enname, fixed_time, data_value, external_producer_id, device_source
) ON t.device_id = s.device_id AND t.enname = s.enname AND t.fixed_time = s.fixed_time
WHEN MATCHED THEN
UPDATE SET
t.simulation_value = t.data_value,
t.is_simulation = 0,
t.data_value = s.data_value,
t.update_time = GETDATE()
WHEN NOT MATCHED THEN
INSERT(
device_id, catagory_id, collect_time, enname, fixed_time, data_value,
create_time, update_time, is_simulation, external_producer_id, device_source
) VALUES(
s.device_id, s.catagory_id, s.collect_time, s.enname, s.fixed_time, s.data_value,
GETDATE(), GETDATE(), 0, s.external_producer_id, s.device_source
);
</update>

传入的参数有很多条,包括下面一条:
2011(Integer), 13(Integer), 2020-12-05 12:59:59.0(Timestamp), AccumulatedFlow(String), 2020-12-05 13:00:00.0(Timestamp), 30484672.00(BigDecimal), HD76_10001_P1(String), WWAUTO(String),


结果如下图(已经按时间排序)
...全文
38 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧