Samma som giltig UPDATE
uttalande 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 inte bara använda ett tabellalias i FROM
sats som måltabell i UPDATE
klausul. Tabellen (en!) som ska uppdateras kommer direkt efter UPDATE
nyckelord (om vi ignorerar en möjlig ONLY
nyckelord däremellan). Du kan lägga till ett alias där om du vill. Det är den omedelbara orsaken till ditt felmeddelande, men det finns mer.
Kolumnen som ska uppdateras är alltid från den ena tabellen som ska uppdateras och kan inte tabellkvalificeras.
Du behöver inte upprepa måltabellen i FROM
klausul - förutom speciella fall som detta:
Detta valfria tillägg kan undvika onödiga kostnader genom att undertrycka uppdateringar som inte ändrar någonting:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Se:
Mer i den utmärkta manualen på UPDATE
.