fix: UPDATE select子查询需要MERGE INTO实现
This commit is contained in:
parent
ec2e826f38
commit
c70948c34a
@ -27,16 +27,18 @@
|
||||
</resultMap>
|
||||
|
||||
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
|
||||
UPDATE job AS rt
|
||||
SET rt.next_trigger_at = tt.next_trigger_at
|
||||
FROM (
|
||||
<foreach collection="list" item="item" index="index" separator=" union all ">
|
||||
select
|
||||
#{item.nextTriggerAt} as next_trigger_at,
|
||||
#{item.id} as id
|
||||
</foreach>
|
||||
) AS tt
|
||||
WHERE rt.id = tt.id
|
||||
MERGE INTO job dest
|
||||
USING (
|
||||
<foreach collection="list" item="item" index="index" separator=" UNION ALL ">
|
||||
SELECT
|
||||
#{item.nextTriggerAt} AS next_trigger_at,
|
||||
#{item.id} AS id
|
||||
FROM DUAL
|
||||
</foreach>
|
||||
) src
|
||||
ON (dest.id = src.id)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET dest.next_trigger_at = src.next_trigger_at
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
@ -31,16 +31,19 @@
|
||||
(#{item.namespaceId}, #{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt}, #{item.taskType}, #{item.retryStatus}, #{item.createDt})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
|
||||
UPDATE retry_task_${partition} AS rt
|
||||
SET next_trigger_at = tt.next_trigger_at
|
||||
FROM (
|
||||
<foreach collection="list" item="item" index="index" separator=" union all ">
|
||||
select
|
||||
#{item.nextTriggerAt} as next_trigger_at,
|
||||
#{item.id} as id
|
||||
</foreach>
|
||||
) AS tt
|
||||
WHERE rt.id = tt.id
|
||||
MERGE INTO retry_task_${partition} dest
|
||||
USING (
|
||||
<foreach collection="list" item="item" index="index" separator=" UNION ALL ">
|
||||
SELECT
|
||||
#{item.nextTriggerAt} AS next_trigger_at,
|
||||
#{item.id} AS id
|
||||
FROM DUAL
|
||||
</foreach>
|
||||
) src
|
||||
ON (dest.id = src.id)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET dest.next_trigger_at = src.next_trigger_at
|
||||
</update>
|
||||
</mapper>
|
||||
|
@ -15,17 +15,20 @@
|
||||
<result column="deleted" property="deleted" />
|
||||
<result column="ext_attrs" property="extAttrs" />
|
||||
</resultMap>
|
||||
|
||||
<update id="updateBatchNextTriggerAtById" parameterType="java.util.List">
|
||||
UPDATE workflow AS rt
|
||||
SET next_trigger_at = tt.next_trigger_at
|
||||
FROM (
|
||||
<foreach collection="list" item="item" index="index" separator=" union all ">
|
||||
select
|
||||
#{item.nextTriggerAt} as next_trigger_at,
|
||||
#{item.id} as id
|
||||
</foreach>
|
||||
) AS tt
|
||||
WHERE rt.id = tt.id
|
||||
MERGE INTO workflow dest
|
||||
USING (
|
||||
<foreach collection="list" item="item" index="index" separator=" UNION ALL ">
|
||||
SELECT
|
||||
#{item.nextTriggerAt} AS next_trigger_at,
|
||||
#{item.id} AS id
|
||||
FROM DUAL
|
||||
</foreach>
|
||||
) src
|
||||
ON (dest.id = src.id)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET dest.next_trigger_at = src.next_trigger_at
|
||||
</update>
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user