有効なUPDATE
と同じ 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
FROM
でテーブルエイリアスを使用することはできません UPDATE
のターゲットテーブルとしての句 句。更新される(1つ!)テーブルはUPDATE
の直後にあります キーワード(可能なONLY
を無視した場合 間にキーワード)。必要に応じて、そこにエイリアスを追加できます。これがエラーメッセージの直接の原因ですが、それだけではありません。
更新される列は、常に更新される1つのテーブルからのものであり、テーブル修飾することはできません。
FROM
でターゲットテーブルを繰り返す必要はありません 条項-次のような特別な場合を除く:
このオプションの追加は、何も変更しない更新を抑制することにより、無意味なコストを回避できます。
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
参照: