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 ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html