- vous n'avez pas besoin de la sous-requête
- vous n'avez pas besoin de resélectionner les messages, (la table cible est déjà dans la table de plage)
- vous devez associer la requête source à la ligne de résultat
UPDATE messages msg
SET vector = to_tsvector(lang.language::regconfig, msg.message)
FROM locales as loco
JOIN languages as lang ON loco.language_id = lang.id
WHERE msg.locale_id = loco.id
;