Are subselects treated as atomic single commands? - Mailing list pgsql-general

From Thomas Chille
Subject Are subselects treated as atomic single commands?
Date
Msg-id 004501c4d242$b7e46690$500a0a0a@spoon.de
Whole thread Raw
List 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 by date:

Previous
From: "Joshua D. Drake"
Date:
Subject: Re: PostGreSQL upgrade failed (Debian Packages), need advice...
Next
From: "Joshua D. Drake"
Date:
Subject: Re: Nesting Stored Procedure Calls