- non hai bisogno della sottoquery
- non è necessario riselezionare i messaggi (la tabella di destinazione è già nella tabella dell'intervallo)
- devi associare la query-source alla riga dei risultati
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
;