Identique à une UPDATE
valide déclaration dans Postgres :
UPDATE incode_warrants iw
SET warn_docket_no = iv.viol_docket_no
FROM incode_warrantvs iwvs
JOIN incode_violations iv ON iv.viol_citation_no = iwvs.warnv_citation_no
AND iv.viol_viol_no = iwvs.warnv_viol_no
WHERE iw.warn_rid = iwvs.warnv_rid;
-- AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no -- see below
Vous ne pouvez pas simplement utiliser un alias de table dans le FROM
clause comme table cible dans le UPDATE
clause. La (une !) table à mettre à jour vient juste après UPDATE
mot-clé (si nous ignorons un éventuel ONLY
mot-clé entre les deux). Vous pouvez y ajouter un alias si vous le souhaitez. C'est la cause immédiate de votre message d'erreur, mais il y a plus.
La colonne à mettre à jour provient toujours de la table à mettre à jour et ne peut pas être qualifiée de table.
Vous n'avez pas besoin de répéter la table cible dans le FROM
clause - sauf cas particuliers comme celui-ci :
Cet ajout facultatif peut éviter des frais inutiles en supprimant les mises à jour qui ne changent rien :
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Voir :
Plus d'informations dans l'excellent manuel sur UPDATE
.