Giống như UPDATE
hợp lệ tuyên bố trong 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
Bạn không thể chỉ sử dụng bí danh bảng trong FROM
mệnh đề dưới dạng bảng đích trong UPDATE
mệnh đề. Bảng (một!) Sẽ được cập nhật đến ngay sau UPDATE
từ khóa (nếu chúng tôi bỏ qua một ONLY
có thể có từ khóa ở giữa). Bạn có thể thêm bí danh ở đó nếu muốn. Đó là nguyên nhân ngay lập tức gây ra thông báo lỗi của bạn, nhưng còn nhiều hơn thế nữa.
Cột được cập nhật luôn nằm trong một bảng sẽ được cập nhật và không thể đủ điều kiện trong bảng.
Bạn không cần lặp lại bảng mục tiêu trong FROM
mệnh đề - ngoại trừ những trường hợp đặc biệt như thế này:
Việc bổ sung tùy chọn này có thể tránh chi phí vô nghĩa bằng cách chặn các bản cập nhật không thay đổi bất kỳ điều gì:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Xem:
Xem thêm trong hướng dẫn tuyệt vời về UPDATE
.