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