Na seguinte função armazenada PgSql:
CREATE OR REPLACE FUNCTION get_offer_from_id(
offer_id bigint)
RETURNS json AS $$
DECLARE
res "entity_data_result";
r "get_offer_data";
BEGIN
FOR r IN SELECT * FROM "get_offer_data"
WHERE "id" = offer_id
LIMIT 1
FOR SHARE
LOOP
res.found := true;
res.data := row_to_json(r);
END LOOP;
RETURN row_to_json(res);
END; $$
LANGUAGE plpgsql;
existe um benefício real em usar FOR SHARE ou pode-se removê-lo da consulta?
Isso depende do que mais acontecer na transação.
Com o
for share
there, ninguém pode atualizar a linhaselect
edget_offer_data
até que a transação seja confirmada ou revertida.Sem o contexto, é realmente impossível dizer qual era o propósito original de adicionar o bloqueio.