Sama dengan UPDATE
yang valid pernyataan di 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
Anda tidak bisa hanya menggunakan alias tabel di FROM
klausa sebagai tabel target dalam UPDATE
ayat. Tabel (satu!) yang akan diperbarui muncul tepat setelah UPDATE
kata kunci (jika kita mengabaikan kemungkinan ONLY
kata kunci di antara). Anda dapat menambahkan alias di sana jika Anda mau. Itulah penyebab langsung dari pesan kesalahan Anda, tetapi masih ada lagi.
Kolom yang akan diperbarui selalu dari satu tabel yang akan diperbarui dan tidak dapat memenuhi syarat tabel.
Anda tidak perlu mengulang tabel target di FROM
klausa - kecuali untuk kasus khusus seperti ini:
Penambahan opsional ini dapat menghindari biaya yang tidak berguna dengan menekan pembaruan yang tidak mengubah apa pun:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Lihat:
Selengkapnya di manual bagus tentang UPDATE
.