Das gleiche wie gültiges UPDATE
Anweisung in 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
Sie können nicht einfach einen Tabellenalias in FROM
verwenden -Klausel als Zieltabelle im UPDATE
Klausel. Die (eine!) zu aktualisierende Tabelle kommt direkt nach UPDATE
Schlüsselwort (wenn wir einen möglichen ONLY
ignorieren Stichwort dazwischen). Wenn Sie möchten, können Sie dort einen Alias hinzufügen. Das ist die unmittelbare Ursache Ihrer Fehlermeldung, aber es gibt noch mehr.
Die zu aktualisierende Spalte stammt immer aus der einen zu aktualisierenden Tabelle und kann nicht tabellenqualifiziert werden.
Sie müssen die Zieltabelle im FROM
nicht wiederholen -Klausel - mit Ausnahme von Sonderfällen wie diesem:
Diese optionale Ergänzung kann unnötige Kosten vermeiden, indem Updates unterdrückt werden, die nichts ändern:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Siehe:
Mehr dazu im ausgezeichneten Handbuch zu UPDATE
.