Какие строки заблокированы с помощью SELECT FOR UPDATE в представлении - PullRequest
0 голосов
/ 01 мая 2020

В настоящее время я использую свой ORM для создания запроса, который выглядит следующим образом

SELECT * FROM table WHERE is_deleted = FALSE LIMIT 1 FOR UPDATE SKIPPED LOCKED

Тем не менее, в моем ORM внесены некоторые критические изменения, которые я не могу легко изменить в запросе, чтобы добавить FOR UPDATE модификатор, поэтому я считаю, что мне нужно прибегнуть к представлению:

CREATE VIEW undeleted_items AS
   SELECT * FROM table WHERE is_deleted = FALSE FOR UPDATE SKIPPED LOCKED;

Затем я могу поручить своему ORM по-прежнему выдавать правильный запрос к представлению:

SELECT * FROM undeleted_items LIMIT 1;

Мой вопрос является: будет ли представление заблокировать все строки или только один, возвращенный через LIMIT 1? Если это так, будет ли более целесообразным перемещение LIMIT 1 в поле зрения?

...