2016-07-27 32 views
0

我試圖實現使用SELECT FOR UPDATE PSQL命令https://www.postgresql.org/docs/9.1/static/explicit-locking.htmlPSQL:行通過選擇鎖定FOR UPDATE

通過數據庫鎖定,我不能找到太多的文檔各地這樣做,除了一個事實,即命令允許數據庫基於行的鎖定

我想知道如果線程1首先執行SELECT FOR UPDATE會發生什麼,然後線程2不久後又嘗試執行相同的命令。線程2是否被阻塞,直到線程1中的數據庫事務提交或回滾?

+0

你爲什麼不試試?您可以通過向PostgreSQL數據庫打開2個會話並在事務中按順序執行命令來模擬此線程。 – sstan

回答

1

是的,線程2將等待,直到線程1完成。

您可以使用NOWAITSKIP LOCKS來防止操作等待(請參閱SELECT in the documentation)。