Същото като валиден UPDATE
израз в Postgre:
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
клауза. Таблицата (една!), която трябва да се актуализира, идва веднага след UPDATE
ключова дума (ако пренебрегнем възможен ONLY
ключова дума между тях). Можете да добавите псевдоним там, ако искате. Това е непосредствената причина за вашето съобщение за грешка, но има и още.
Колоната, която трябва да се актуализира, е винаги от една таблица, която трябва да се актуализира, и не може да бъде квалифицирана като таблица.
Не е необходимо да повтаряте целевата таблица в FROM
клауза - с изключение на специални случаи като този:
Това незадължително допълнение може да избегне безсмислени разходи чрез потискане на актуализации, които не променят нищо:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Вижте:
Повече в отличното ръководство на UPDATE
.