web-dev-qa-db-ja.com

WHERE句のないUPDATEはPostgreSQLのテーブルをロックしますか?

テーブル全体UPDATEWHERE句を指定せずに)はPostgreSQLのテーブルをロックしますか?例えば。行が削除/挿入されるのを防ぎますか?

例えば。 UPDATE t1 SET key = 'value'を実行する場合UPDATEの実行中にt1に新しい行が挿入されないことを期待できますか?

いいえの場合、UPDATEが開始後に表示された行も更新することを期待できますか? (キーの定義にDEFAULT 'value'はありません)

9
origaminal

WHERE句のないUPDATEはテーブルのすべての行をロックしますが、DMLのテーブル自体はロックしません。

行はロックされているため、別のトランザクションから削除できません。

しかし、問題なく新しい行を挿入できます(それらが制約に違反していない場合)。

挿入された行 UPDATEはUPDATEステートメントでは認識されないため、変更されません。

15