Ravi Krishna <srkrishna@xxxxxxxxxxx> writes: >> No. PostgreSQL may remove a dead row, but a dead row is by definition >> no longer visible, so it wouldn't be found by a query. > I am wondering whether it is a good practice to use CTID in a where > clause. It's fine if part of your business logic is that you don't want to allow concurrent updates. In this case, the OP seems to want to prevent rather than tolerate the concurrent update, so I don't think he needs to revisit the app's use of CTID. If you do need to support concurrent updates, then yeah relying on CTID is likely to be problematic. regards, tom lane