"Dan Langille" <dan(at)langille(dot)org> writes:
> The difference between the two SQL statements is the inclusion of
> Ports_Check in the WHERE EXISTS select clause.
Which caused it to do the wrong thing. I think you'll find this
command set found_in_ports = TRUE in *every* row of Ports_Check.
Reason: the EXISTS clause no longer depends on the outer update,
but evaluates to a constant TRUE. (Or possibly a constant FALSE,
but that seems unlikely.)
regards, tom lane