锁定新插入的行[PostgreSQL]

Zan*_*nko 4 sql postgresql

有没有办法锁定最近插入的行,以便在我当前的事务仍在进行时其他事务不会看到它?

Cra*_*ger 6

你不必这样做。事实上,你不能有相反的行为。在事务提交之前,无法使新插入的行可见。

尽管它对并发不可见SELECT,但它仍然会影响并发INSERT(或UPDATE多个)。具体来说,如果您尝试将相同的值插入两个不同事务中的唯一索引,一个事务将阻塞,直到另一个事务提交或回滚。然后它将决定是否需要引发唯一的违规错误,或者是否可以继续。因此,虽然您无法直接看到未提交的数据,但有时您可以看到其副作用。