Skip site navigation (1) Skip section navigation (2)

Re: Migration SQL Serveur 2008 vers PostgreSQL

From: Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
To: Ronan Dunklau <rdunklau(at)gmail(dot)com>
Cc: "F(dot) BROUARD \/ SQLpro" <sqlpro(at)club-internet(dot)fr>, pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Migration SQL Serveur 2008 vers PostgreSQL
Date: 2012-01-05 10:08:53
Message-ID: 87y5tmbgwa.fsf@hi-media-techno.com (view raw or flat)
Thread:
Lists: pgsql-fr-generale
Ronan Dunklau <rdunklau(at)gmail(dot)com> writes:
> Pour ce point précis, il me semble que la procédure suivante remplit
> le même office, à moins que je n'aie raté un point ?
>
> create or replace function p_insert_transaction(val1 integer) returns
> void as $$
> BEGIN
>   BEGIN
>     insert into t2 values (val1);
>     insert into t1 values (val1);
>   EXCEPTION WHEN INTEGRITY_CONSTRAINT_VIOLATION THEN
>     insert into t3 values(val1);
>   END;
> END;
> $$ language 'plpgsql';

Ah oui tiens c'est dans le bon ordre en fait :)

Ce qui est impossible c'est de COMMIT une partie puis ROLLBACK une autre
de manière indépendante.  Sauf si c'est une sous-transaction, on peut
alors utiliser ROLLBACK TO SAVEPOINT.

Le problème se pose donc dans ce cas :

 BEGIN;
   action-1;
   BEGIN;
     action-2;
   COMMIT;
   action-3;
 ROLLBACK;

Il faut alors que les actions 1 et 3 soient annulée, et que l'action 2
soit visible. Je ne crois pas qu'il soit possible de faire ça nativement
en plpgsql, même si c'est facile à faire avec plproxy ou dblink.

L'exemple qui fonctionne bien avec du commit suivi de rollback :

 BEGIN;
  SAVEPOINT a;
   action-1;
  RELEASE SAVEPOINT a; -- commit intermédiaire
  SAVEPOINT b;
   action-2;
  ROLLBACK TO SAVEPOINT b; -- rollback intermédiaire
 COMMIT;

-- 
Dimitri Fontaine
http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et Support

In response to

pgsql-fr-generale by date

Next:From: F. BROUARD / SQLproDate: 2012-01-05 13:24:02
Subject: Re: Migration SQL Serveur 2008 vers PostgreSQL
Previous:From: Guillaume LelargeDate: 2012-01-05 10:05:55
Subject: Re: Migration SQL Serveur 2008 vers PostgreSQL

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group