Как заблокировать SELECT в PostgreSQL? - PullRequest
0 голосов
/ 22 мая 2019

Я привык делать это в MySQL:

INSERT INTO ... SELECT ...

, который блокировал бы таблицу I SELECT из.

Теперь я пытаюсь сделать что-то подобное в PostgreSQL,где я выбираю набор строк в таблице, а затем вставляю некоторые вещи в другие таблицы на основе значений этих строк.Я хочу предотвратить устаревание данных, поэтому мне интересно, как я могу заблокировать SELECT в PostgresSQL.

1 Ответ

0 голосов
/ 22 мая 2019

Нет необходимости явно блокировать что-либо. Оператор SELECT всегда будет видеть непротиворечивый снимок таблицы, независимо от того, как долго он выполняется.

Результат не изменится, если вы заблокируете таблицу от одновременных изменений перед запуском SELECT, но излишне будете вредить параллелизму.

Если вам нужно несколько запросов, чтобы увидеть согласованное состояние базы данных, запустите транзакцию с уровнем изоляции REPEATABLE READ. Тогда все операторы в транзакции будут видеть одно и то же состояние базы данных.

...