LOCK TABLE IN EXCLUSIVE MODE is hardly the way to program a function
that you want to be able to invoke concurrently from multiple backends.
Moreover, "SELECT max()" is going to be slow --- and you're doing it
while holding the exclusive lock! Concurrent performance is gonna be
awful.
A much better solution to your problem is to use a sequence object to
generate the ID values. For example:
new_id := nextval(''seq_name'');
INSERT INTO admin_session VALUES (new_id, a_ss, ''now'', ...);
return new_id;
BTW, this could be the complete body of your function. The "SELECT FROM
a_user" check would be better handled by defining a foreign-key
constraint on the a_id column.
regards, tom lane
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])