В настоящее время я использую свой 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
в поле зрения?