Ce qu'on peut soupçonner, c'est que les conditions de ta requête UPDATE ne rencontrant aucune correspondance, MySQL effectue alors une insertion automatique, à ce détail près que la clé primaire existe déjà, tu as ce retour de duplication d'une clé unique.
Donc je suggère vivement de vérifier tes conditions de tri. Fais un test avec un SELECT basé sur les mêmes critères :
SELECT position_aElement
FROM composing_architecture
where
(
case
when @from > 5 then position_aElement between 5 and @from
when @from < 5 then position_aElement between @from and 5
end
)
and ref_architecture = 'z63f44ce81'
order by position_aElement desc;
Si je ne fais pas erreur, il ne devrait revenir aucune ligne.
______________________________________________________________
Une question bien formulée, c'est un problème bien compris : ça représente déjà les 3/4 de la réponse ;)