Det samme som gyldig UPDATE
udtalelse i 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
Du kan ikke bare bruge et tabelalias i FROM
klausul som måltabel i UPDATE
klausul. Den (én!) tabel, der skal opdateres, kommer lige efter UPDATE
søgeord (hvis vi ignorerer en mulig ONLY
). søgeord i mellem). Du kan tilføje et alias der, hvis du vil. Det er den umiddelbare årsag til din fejlmeddelelse, men der er mere.
Kolonnen, der skal opdateres, er altid fra den ene tabel, der skal opdateres og kan ikke tabelkvalificeres.
Du behøver ikke at gentage måltabellen i FROM
klausul - bortset fra særlige tilfælde som dette:
Denne valgfri tilføjelse kan undgå meningsløse omkostninger ved at undertrykke opdateringer, der ikke ændrer noget:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Se:
Mere i den fremragende manual på UPDATE
.