Tak samo jak ważna UPDATE
oświadczenie w Postgresie:
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
Nie możesz po prostu użyć aliasu tabeli w FROM
klauzula jako tabela docelowa w UPDATE
klauzula. Ta (jedna!) tabela do aktualizacji pojawia się zaraz po UPDATE
słowo kluczowe (jeśli zignorujemy możliwe ONLY
słowo kluczowe pomiędzy). Możesz tam dodać alias, jeśli chcesz. To bezpośrednia przyczyna komunikatu o błędzie, ale to nie wszystko.
Aktualizowana kolumna zawsze pochodzi z jednej tabeli, która ma być aktualizowana i nie może być zakwalifikowana do tabeli.
Nie musisz powtarzać tabeli docelowej w FROM
klauzula - z wyjątkiem szczególnych przypadków, takich jak:
Ten opcjonalny dodatek pozwala uniknąć bezsensownych kosztów, blokując aktualizacje, które niczego nie zmieniają:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Zobacz:
Więcej w doskonałej instrukcji UPDATE
.