Re: reliable lock inside stored procedure

From: Richard Huxton <dev(at)archonet(dot)com>
To: Sebastian Böhm <psql(at)seb(dot)exse(dot)net>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: reliable lock inside stored procedure
Date: 2008-11-03 11:06:50
Message-ID: 490EDB4A.90204@archonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-sql

Sebastian Böhm wrote:
> Hi,
>
> I have a stored procedure and I need a SHARE ROW EXCLUSIVE lock in this
> procedure (otherwise data will get corrupted).

OK. PostgreSQL doesn't have "stored procedures" so I guess you're
talking about a function.

> According to the documentation the LOCK statement is useless and will
> silently fail if not executed inside a transaction. (btw: this sounds
> dangerous to me)

I'm not sure what you mean here, and I don't think you've understood the
documentation. It's not possible to have a LOCK statement outside of a
transaction. It's just not meaningful to have a transaction that only
has a LOCK statement in it.

> Also it is not possible to start a transaction inside a stored procedure.

All functions execute within a transaction. As do all other SELECT,
UPDATE, INSERT, DELETE, CREATE TABLE etc. If you (or your client
library) do not supply a BEGIN then the command is treated as though
BEGIN...COMMIT surrounded it. You can't have nested transactions because
the COMMIT of a subtransaction wouldn't be meaningful. You can use
SAVEPOINTS to roll back to a known point.

> How can I make the code of this stored procedure safe?
>
> is there a way to let the procedure fail with an error if not executed
> within a transaction.

You can't execute outside of a transaction. It's not possible.

> does adding a SAVEPOINT the trick?
> documentation says that savepoints can only be established inside
> transactions, but does it fail fatal enough so that the procedure getss
> aborted? (more fatal than LOCK does?)

I'm not sure I understand what you mean here.

--
Richard Huxton
Archonet Ltd

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message KaiGai Kohei 2008-11-03 11:36:37 Re: Updates of SE-PostgreSQL 8.4devel patches (r1168)
Previous Message Markus Wanner 2008-11-03 11:03:29 Re: WIP: Column-level Privileges

Browse pgsql-sql by date

  From Date Subject
Next Message Sebastian Böhm 2008-11-03 19:42:54 Re: reliable lock inside stored procedure (SOLVED)
Previous Message Sebastian Böhm 2008-11-03 09:29:55 reliable lock inside stored procedure