Вся таблица UPDATE
(без указания WHERE
предложения) блокирует таблицу в PostgreSQL? Например, это предотвращает удаление / вставку строк?
Например, если я запускаю
UPDATE t1 SET key = 'value'
Могу ли я ожидать, что новые строки не будут вставлены t1
во время UPDATE
выполнения?
Если нет, могу ли я ожидать UPDATE
обновления даже строк, появившихся после его запуска? (ключ не имеет DEFAULT 'value'
в своем определении)
postgresql
locking
origaminal
источник
источник
UPDATE
реализовать таким образом, чтобы обновлять вновь вставленные строки.Ответы:
UPDATE без предложения WHERE заблокирует все строки в таблице, но не заблокирует саму таблицу для DML.
Строки не могут быть удалены из другой транзакции, потому что они заблокированы.
Но вы можете вставлять новые строки без проблем (при условии, что они не нарушают никаких ограничений).
Любая строка, вставленная после UPDATE, не будет видна оператору UPDATE и, следовательно, не будет изменена.
источник
UPDATE
безWHERE
.