Re: [INTERFACES] Transaction: Begin, Lock

From: Michael Meskes <meskes(at)postgreSQL(dot)org>
To: Margarita Barvinok <brita(at)umich(dot)edu>
Cc: pgsql-interfaces(at)postgreSQL(dot)org
Subject: Re: [INTERFACES] Transaction: Begin, Lock
Date: 1999-09-14 18:22:15
Message-ID: 19990914202215.A5414@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

On Mon, Sep 13, 1999 at 10:58:43AM -0400, Margarita Barvinok wrote:
> EXEC SQL CONNECT TO ...
> for (i=2; i<x: i++) {
> strncpy(oid_c, entries[i].val, 10); /* get oid */
> oid_rec = atoi(oid_c);
> EXEC SQL BEGIN WORK;
> EXEC SQL DELETE FROM phonebook
> WHERE oid = :oid_rec;
> EXEC SQL COMMIT WORK;
> }
> EXEC SQL DISCONNECT;
>
> 1. Why i get the following message when I run this code?
> NOTICE: BeginTransactionBlock and not in default state

I take it you did not use 'ecpg -t' did you? The normal situation is that
ecpg creates a auto-transaction mode, i.e. a transaction is started
automatically. You only need to issue a COMMIT once you finish your
transaction resp. a ROLLBACK if you want to cancel it.

So you tell the backend to start a transaction while already inside a
transaction. And that cannot work.

You can either just remove the BEGIN WORK statement or you always give
option '-t' to ecpg.

> 2. How should I lock the table phonebook during this transaction?

Why do you need that? You do not need an explicit lock for the delete to
work.

Michael
--
Michael Meskes | Go SF 49ers!
Th.-Heuss-Str. 61, D-41812 Erkelenz | Go Rhein Fire!
Tel.: (+49) 2431/72651 | Use Debian GNU/Linux!
Email: Michael(at)Fam-Meskes(dot)De | Use PostgreSQL!

In response to

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message Michael Meskes 1999-09-14 18:23:04 Re: [INTERFACES] ecpg and getting just assigned serial number
Previous Message Peter Mount 1999-09-14 17:33:16 Re: [INTERFACES] JDBC and getting just assigned serial number