Re: une autre histoire de triggers....

Lists: pgsql-fr-generale
From: Pierre BOIZOT <pierre(dot)boizot(at)gmail(dot)com>
To: PG-Mail-liste <pgsql-fr-generale(at)postgresql(dot)org>
Subject: une autre histoire de triggers....
Date: 2013-08-28 08:41:39
Message-ID: CANxSh5zh8rMgvm6NUYJSjPaZ2aMJ4d4km7eV4kQZrnr99rA2aw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour,

Dans une phase exploratoire de migration d'oracle vers postgresql , je me
heurte à un problème de migration de certain trigger.

Le code du trigger oracle :

create or replace
trigger "SIBMIG"."VAL_PRO_DELETE" BEFORE
DELETE ON "VALIDATEUR_PROJET"

BEGIN
declare
v_tem_sel_ok number(1) := 0;
begin
-- code ....
end;
END;

a
​ été traduit ​par


CREATE OR REPLACE FUNCTION trigger_fct_val_pro_delete () RETURNS trigger AS
$BODY$
BEGIN

declare
v_tem_sel_ok numeric(1) := 0;
begin
​--- code
end;
RETURN NEW;
END
$BODY$
LANGUAGE 'plpgsql';

​​
CREATE TRIGGER val_pro_delete
BEFORE STATEMENT DELETE ON validateur_projet FOR EACH STATEMENT
EXECUTE PROCEDURE trigger_fct_val_pro_delete();

​cette syntaxe n'est pas acceptée, je ne vois pas de référence a BEFORE
STATEMENT dans la documentation
postgresql<http://docs.postgresqlfr.org/9.3/sql-createtrigger.html>sur
la syntaxe du create trigger.

Pourriez vous me confirmer que la bonne syntaxe est :


CREATE TRIGGER val_pro_delete
BEFORE DELETE ON validateur_projet FOR EACH STATEMENT
EXECUTE PROCEDURE trigger_fct_val_pro_delete();

​je déclarerai alors une issue sur ora2pg.

A+
Pierre​

Pierre.

G+ <https://plus.google.com/u/0/107377830070954284209/about>


From: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
To: Pierre BOIZOT <pierre(dot)boizot(at)gmail(dot)com>
Cc: PG-Mail-liste <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: une autre histoire de triggers....
Date: 2013-08-28 09:21:41
Message-ID: 1377681701.2072.15.camel@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

On Wed, 2013-08-28 at 10:41 +0200, Pierre BOIZOT wrote:
> Bonjour,
>
> Dans une phase exploratoire de migration d'oracle vers postgresql , je me
> heurte à un problème de migration de certain trigger.
>
> Le code du trigger oracle :
>
> create or replace
> trigger "SIBMIG"."VAL_PRO_DELETE" BEFORE
> DELETE ON "VALIDATEUR_PROJET"
>
> BEGIN
> declare
> v_tem_sel_ok number(1) := 0;
> begin
> -- code ....
> end;
> END;
>
> a
> ​ été traduit ​par
>
> ​
> CREATE OR REPLACE FUNCTION trigger_fct_val_pro_delete () RETURNS trigger AS
> $BODY$
> BEGIN
>
> declare
> v_tem_sel_ok numeric(1) := 0;
> begin
> ​--- code
> end;
> RETURN NEW;
> END
> $BODY$
> LANGUAGE 'plpgsql';
>
> ​​
> CREATE TRIGGER val_pro_delete
> BEFORE STATEMENT DELETE ON validateur_projet FOR EACH STATEMENT
> EXECUTE PROCEDURE trigger_fct_val_pro_delete();
> ​
>
>
> ​cette syntaxe n'est pas acceptée, je ne vois pas de référence a BEFORE
> STATEMENT dans la documentation
> postgresql<http://docs.postgresqlfr.org/9.3/sql-createtrigger.html>sur
> la syntaxe du create trigger.
>
> Pourriez vous me confirmer que la bonne syntaxe est :
> ​
> ​
> CREATE TRIGGER val_pro_delete
> BEFORE DELETE ON validateur_projet FOR EACH STATEMENT
> EXECUTE PROCEDURE trigger_fct_val_pro_delete();
>

C'est la bonne. ora2pg est erroné ici.

> ​je déclarerai alors une issue sur ora2pg.
>

Merci.

--
Guillaume
http://blog.guillaume.lelarge.info
http://www.dalibo.com


From: Pierre BOIZOT <pierre(dot)boizot(at)gmail(dot)com>
To: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
Cc: PG-Mail-liste <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: une autre histoire de triggers....
Date: 2013-08-28 10:27:39
Message-ID: CANxSh5x7AzVkUyZt0sprqttPMpGpaWn13GMqFA84Li213SQVYg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg토토 결과SQL : Postg토토

Merci pour la confirmation.
Pierre

Pierre.

G+ <https://plus.google.com/u/0/107377830070954284209/about>

Le 28 août 2013 11:21, Guillaume Lelarge <guillaume(at)lelarge(dot)info> a écrit :

> On Wed, 2013-08-28 at 10:41 +0200, Pierre BOIZOT wrote:
> > Bonjour,
> >
> > Dans une phase exploratoire de migration d'oracle vers postgresql , je me
> > heurte à un problème de migration de certain trigger.
> >
> > Le code du trigger oracle :
> >
> > create or replace
> > trigger "SIBMIG"."VAL_PRO_DELETE" BEFORE
> > DELETE ON "VALIDATEUR_PROJET"
> >
> > BEGIN
> > declare
> > v_tem_sel_ok number(1) := 0;
> > begin
> > -- code ....
> > end;
> > END;
> >
> > a
> > ​ été traduit ​par
> >
> > ​
> > CREATE OR REPLACE FUNCTION trigger_fct_val_pro_delete () RETURNS trigger
> AS
> > $BODY$
> > BEGIN
> >
> > declare
> > v_tem_sel_ok numeric(1) := 0;
> > begin
> > ​--- code
> > end;
> > RETURN NEW;
> > END
> > $BODY$
> > LANGUAGE 'plpgsql';
> >
> > ​​
> > CREATE TRIGGER val_pro_delete
> > BEFORE STATEMENT DELETE ON validateur_projet FOR EACH STATEMENT
> > EXECUTE PROCEDURE trigger_fct_val_pro_delete();
> > ​
> >
> >
> > ​cette syntaxe n'est pas acceptée, je ne vois pas de référence a BEFORE
> > STATEMENT dans la documentation
> > postgresql<http://docs.postgresqlfr.org/9.3/sql-createtrigger.html>sur
> > la syntaxe du create trigger.
> >
> > Pourriez vous me confirmer que la bonne syntaxe est :
> > ​
> > ​
> > CREATE TRIGGER val_pro_delete
> > BEFORE DELETE ON validateur_projet FOR EACH STATEMENT
> > EXECUTE PROCEDURE trigger_fct_val_pro_delete();
> >
>
> C'est la bonne. ora2pg est erroné ici.
>
> > ​je déclarerai alors une issue sur ora2pg.
> >
>
> Merci.
>
>
> --
> Guillaume
> http://blog.guillaume.lelarge.info
> http://www.dalibo.com
>
>