From: Chris Dunworth <cdunworth@earthcomber.com>
To: arnaulist@andromeiberica.com
Cc: pgsql-sql@postgresql.org
Subject: Re: help with version checking
Date: Thu, 28 Dec 2006 12:32:51 -0600
Message-ID: <45940DD3.3040509@earthcomber.com> (raw)
In-Reply-To: <459409A2.9020103@andromeiberica.com>
References: <000001c72aa7$e705f1e0$0b00a8c0@tedy>
<45940403.4010909@andromeiberica.com>
<21284.1167328587@sss.pgh.pa.us>
<459409A2.9020103@andromeiberica.com>
Can you do the whole thing inside a transaction context (both the
version check and the updates)? The exception should cause the
transaction to bail out, and the updates won't proceed.
Thus:
BEGIN;
SELECT check_version();
UPDATE agenda_version set version = '1.0.0.1' where id = 1;
COMMIT;
I tried it with your script and it seemed to work for me.
Hope this helps...
-chris
Arnau wrote:
> Tom Lane wrote:
>> Arnau <arnaulist@andromeiberica.com> writes:
>>> I don't want, if it's possible, to create a function.
>>
>> Unlike Oracle, PG makes a strong distinction between SQL and
>> programmable languages (including plpgsql). You can't write
>> plpgsql code without putting it into a function.
>>
>> regards, tom lane
>>
>
> I've tried Daniel's suggestion but the Raise doesn't terminate the
> script execution, so if doesn't do what I need. Notice the Update 1
>
> arebassa@beowulf:~$ psql -d dermagier -f upgrade_agenda.sql
> CREATE FUNCTION
> psql:upgrade_agenda.sql:16: ERROR: This script needs Agenda version
> 1.0.0.0, detected version 1.0.0.1
> UPDATE 1
>
>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: cdunworth@earthcomber.com, arnaulist@andromeiberica.com
Subject: Re: help with version checking
In-Reply-To: <45940DD3.3040509@earthcomber.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox