Lo mismo que UPDATE
válido declaración en 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
No puede simplemente usar un alias de tabla en el FROM
cláusula como tabla de destino en UPDATE
cláusula. La (¡una!) tabla que se actualizará viene justo después de UPDATE
palabra clave (si ignoramos un posible ONLY
palabra clave intermedia). Puede agregar un alias allí si lo desea. Esa es la causa inmediata de su mensaje de error, pero hay más.
La columna que se actualizará siempre es de la tabla que se actualizará y no se puede calificar para la tabla.
No necesita repetir la tabla de destino en el FROM
cláusula - excepto en casos especiales como este:
Esta adición opcional puede evitar costos inútiles al suprimir las actualizaciones que no cambian nada:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Ver:
Más información en el excelente manual sobre UPDATE
.