Are subselects treated as atomic single commands?

Поиск
Список
Период
Сортировка
От Thomas Chille
Тема Are subselects treated as atomic single commands?
Дата
Msg-id cad2de1c041124071225c92cf2@mail.gmail.com
обсуждение исходный текст
Список pgsql-general
Hi,

the docu about the Read Committed Transaction Isolation Level pointed
out: "... The point at issue here is whether or not within a single
command we see an absolutely consistent view of the database.".

Because i dont want to use the Serializable Transaction Isolation
Level or table locks if it not necessary i have one question:

Would the insert command with that subselect treated as one single
command and can i so prevent a race condition between multiple
function calls?

CREATE OR REPLACE FUNCTION "public"."count_parameter" (name, integer)
RETURNS "pg_catalog"."void" AS'
BEGIN

    INSERT INTO parameter (parameter_name, parameter_value) SELECT $1,
$2 WHERE (
        SELECT COUNT(*) = 0 FROM parameter WHERE parameter_name = $1
    );
    IF NOT FOUND THEN
        UPDATE parameter SET parameter_value = parameter_value + $2
WHERE parameter_name = $1;
    END IF;

    RETURN;

END;
'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

best regards,
thomas

В списке pgsql-general по дате отправления:

Предыдущее
От: Miles Keaton
Дата:
Сообщение: why use SCHEMA? any real-world examples?
Следующее
От: Larry White
Дата:
Сообщение: Nesting Stored Procedure Calls