diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index 6f44d71f16b..83579e13b42 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -3024,7 +3024,11 @@ lmerge_matched:
 					 * first qualifying action.
 					 */
 					resultRelationDesc = resultRelInfo->ri_RelationDesc;
-					lockmode = ExecUpdateLockMode(estate, resultRelInfo);
+
+					if (commandType == CMD_UPDATE)
+						lockmode = updateCxt.lockmode;
+					else
+						lockmode = RowExclusiveLock;
 
 					inputslot = EvalPlanQualSlot(epqstate, resultRelationDesc,
 												 resultRelInfo->ri_RangeTableIndex);
