PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#2 Re : PL/pgSQL » transfert résultat d'un champ d'une table dans une autre » 01/08/2015 18:55:20

Bonjour Julien,
Merci de votre conseil.

Je croyais que " insert into" intégrait toute une ligne à la fois ? alors je ne l'employais pas,  parce que voila comment cela se déroule :

- Je rempli un formulaire qui, lorsque je le valide, enregistre ces données dans ma table "copie" et génère donc une nouvelle ligne de données    " cop.int.id  Pk serial  |   champ1_vch   |   copie_dec   | "
- J'ai donc configuré mon trigger en "after" pour le déclencher après la validation du formulaire ( donc après l'enregistrement de ses données dans  " table_copie   " | cop.int.id  Pk serial | ... | ... | .. " )
- résultat  : création d'une nouvelle ligne dans table_copie, enregistrement des données du formulaire ( ça c'est Ok) + enregistrement conditionnel d'une donnée de la table table_origine ( pas OK)
Je ne sais pas si cette explication peut avoir un effet dans votre conseil.

J'ai donc fait ce code avec insert, mais cela empêche que la validation du formulaire enregistre ses données dans la nouvelle ligne de la table_copie    "cop.int.id  Pk serial" | .. |

BEGIN
insert into table_copie (copie_dec)
select table_origine.atransferer_dec from table_origine
where 
table_copier. champ1_vch  = table_origine.champ1_vch 
AND   -- pour vérifier que la nouvelle ligne a bien été créée par le formulaire
cop.int.id is not null;
RETURN NEW;
END;

IL y a qqchose qui m'échappe..

#3 Re : PL/pgSQL » transfert résultat d'un champ d'une table dans une autre » 01/08/2015 13:30:08

Bonjour,
ma difficulté précédente est Ok.
J'ai un autre souçi que je ne comprends pas
J'ai 2 tables, le but est de transférer une donné de la 1ére dans la 2 ieme sous conditions.

Ma table_origine
org.int.id  Pk serial  |   champ1_vch    |  atransferer_dec |
---------------------------------------------------------------------
128                         |           A               |            10              |
---------------------------------------------------------------------
129                         |           B               |            20             |
---------------------------------------------------------------------
120                         |           C               |            30             |
---------------------------------------------------------------------

Ma table_copie
cop.int.id  Pk serial  |   champ1_vch   |       copie_dec        |
---------------------------------------------------------------------
1000                        |           A              |                                |
---------------------------------------------------------------------
1001                        |           A              |                                |
---------------------------------------------------------------------
1002                        |           A              |                                |
---------------------------------------------------------------------
1003                        |           B              |                                |
---------------------------------------------------------------------
1004                        |           B              |                                |
---------------------------------------------------------------------
etc..

Les conditions :
champ1_vch de chaque table doivent identiques pour que atransferer_dec soit transférer vers   copie_dec

Le problème que je rencontre est lorsque je lance mon trigger :
-  j'ajoute une nouvelle clé  "cop.int.id  Pk serial" en créant une nouvelle ligne dans ma table copie, et ça recopie bien ma donnée à transférer de la table origine, donc tout baigne ..
sauf que lorsque j'entre une 2nd ligne ( donc avec une nouvelle clé cop_int_id), ça copie bien ma donnée"champ1_vch"  à transférer mais ça m'efface la 1ére, c'est ça que je comprends pas.

Voila le code :

BEGIN
IF (TG_OP = 'INSERT' ) THEN
update table_copie
SET     copie_dec =
       (   SELECT table_originel. atransferer_dec
            FROM    table_origine
           WHERE  table_copier. champ1_vch  = table_origine.champ1_vch 
            AND   copie_dec_previ is DISTINCT FROM  atransferer_dec
        );
END IF;
RETURN NEW;
END;

OU est mon erreur ?
Merci de votre aide
dan

#4 Re : PL/pgSQL » transfert résultat d'un champ d'une table dans une autre » 19/07/2015 12:54:48

Bonjour,
je vais maintenant tenter avec 3 tables croisées, c'est à dire table 1 en lien avec table2, table 2 en lien avec table 3, mon but étant de copier une colonne x de la table 1 dans une colonne x' de  la table3
Si ce la ne vous ennuie pas, je reviendrai vers vous sous huitaine avec mes codes.
Même méthode, test avec requête et transformation en trigger.
dan

#5 Re : PL/pgSQL » transfert résultat d'un champ d'une table dans une autre » 18/07/2015 12:53:41

bonjour,

si je dois passer par un trigger, à quoi sert la requête ? autant faire un trigger directement ?
A ce moment là, je vois pas l'intérêt d'une requête, il y a qqchose qui m'échappe dans la méthode .

J'ai donc fait un trigger direct en reprenant les codes de la requête comme ceci  :

CREATE TRIGGER "ReqBIU"
  BEFORE INSERT OR UPDATE
  ON table1
  FOR EACH ROW
  EXECUTE PROCEDURE "13072015_1"();

puis la procédure
CREATE OR REPLACE FUNCTION "13072015_1"()
  RETURNS trigger AS
$BODY$BEGIN
UPDATE table1
SET     colonne1 =
        (   SELECT  table2.colonne2
            FROM   table2
            WHERE   table1.id = table2.id
        );
RETURN NEW;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION "13072015_1"()
  OWNER TO xxxxxxx;

..ET CA MARCHE !!! mais seulement si je rajoute "RETURN NEW;" sinon postgres plante glassfish ( ça, je comprends pas pourquoi ..., j'ai pas de New..).

Si vous pouviez juste y jeter un dernier oeil,  ensuite je ne vous embêterai plus ( enfin .. pas pour ça ..)
Merci encore de votre coup de pouce, c'est sympa et pas si fréquent que l'on pense, j'en avais bien besoin
dan

#6 Re : PL/pgSQL » transfert résultat d'un champ d'une table dans une autre » 17/07/2015 15:04:34

Lorsque je l’exécute manuellement avec pgadmin cela ne pose pas de problème.
Ce que je souhaite est de déclencher automatiquement la requête lorsqu'un utilisateur de l'application modifie une des tables.

Peut être faut il alors un trigger pour exécuter la requete ? mais  si j'enregistre la requête, je ne la retrouve pas dans l'arborescence de pgadmin pour la déclencher, comment alors je peux faire ?

Pgadmin offrant cette arborescence pour chaque table :
- colonne
- contraintes
- index
- régles, dans ce menu j'ai "ajouter" une régle qui m'ouvre une fenêtre avec "propriétés", "définitions", "requetes", "SQL"

J'ai donc recopié ma requete dans régles comme ceci :
- propriéte : nom de la requete
- définition : Update
- requetes : texte de la requete
- SQL 

Mais cela ne déclenche rien après avoir relancé netbeans / glassfish,..

Pouvez vous juste m'indiquer dans quelle direction je dois aller ? Simplement pour m'éviter de "m'embourber" comme précédemment sur des modèles d'actions qui n'étaient pas bons..
Dan

#7 Re : PL/pgSQL » transfert résultat d'un champ d'une table dans une autre » 17/07/2015 13:16:40

Bonjour,
merci beaucoup pour l'aide, je ne savais plus vers ou aller.. mais maintenant voila le code qui fonctionne :

UPDATE table1
SET     colonnetable1 =
        (   SELECT table2.colonnetable2
            FROM    table2
            WHERE   table1.id= table2.id
        );
J'ai juste une autre question, qui, comment se déclenche la requête ?

Dan

ps : je ne vois pas ou il faut cliquer pour mettre le code dans une fenêtre de présentation ??

#8 PL/pgSQL » transfert résultat d'un champ d'une table dans une autre » 15/07/2015 14:04:00

MINIX35
Réponses : 12

Bonjour,

J'ai 2 tables
Table 1 calcul
-- colonnes
--- calc_int_id  / Clé primaire SERIAL NOT NULL
--- calc_dec_chiffre / NUMERIC (10,2)
--- calc_dec_....

- Table 2 resultat
-- colonnes
--- result_int_id / Clé primaire  SERIAL NOT NULL
--- calc_int_id / Clé étrangère  INTEGER NOT NULL
--- result_dec_chiffre / NUMERIC(10,2) DEFAUT 0
--- result_dec_....

-- Contraintes table resultat
--- pk_resultat / colonne result_int_id / Unique :oui / Primaire : oui
--- fk_resultat_calcul / colonne fille : result_int_id / Reference : calcul(bip_int_id) / Correspondance : simple / Clé étrangére systeme : non


Je dois copier la colonne calc_dec_chiffre ( table calcul)  dans la colonne result_dec_chiffre (table resultat).


Voila ce que j'ai essayé avec des requetes, j'utilise pgadmin.

1er essai
insert into resultat  (result_dec_chiffre) (select  calc_dec_chiffre from calcul);
ce que j'obtiens : ERROR:  null value in column "result_int_id" violates not-null constraint

J'ai donc passer la colonne resultat(result_int_id) de Non Null à possibilité d'être NUL
Ce que j'obtiens : La requête a été exécutée avec succés : 9 lignes modifiées. La requête a été exécutée en 51 ms.
MAIS .....
la table resultat crée de nouvelles lignes avec de nouvelles clés :  result_int_id / Clé primaire  SERIAL NOT NULL, et les champs clés  calc_int_id / Clé étrangère INTEGER NOT NULL sont maintenant vides, malgré que le champ " result_dec_chiffre" de la table soit bien l'équivalent du champ "calc_dec_chiffre"
Donc ca marche pas.


2 nd essai
INSERT INTO resultat  ( result_dec_chiffre)
SELECT
calc_dec_chiffre
FROM
calcul
WHERE (SELECT calc_int_id
FROM resultat) IS NOT NULL;
J'obtiens : ERROR:  more than one row returned by a subquery used as an expression


3ieme essai avec Join
select
resultat.*,
calcul.calc_dec_chiffre
from
resultat
left join
calcul
on
resultat.result_dec_chiffre  = calcul. calc_dec_chiffre;
J'obtiens : la nouvelle colonne "calcul.calc_dec_chiffre" dans ma table resultat, MAIS Vide ....

Vous avez compris.. je débute.. rien ne marche.
pouvez vous m'aider, comment je dois faire ?
Merci par avance
Dan

Question subsidiaire, comment (qui) se déclenche la requete, un trigger je sais, mais une requete ???

#9 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 31/12/2014 17:42:06

J'oubliais le message glassfish
Caused by: org.postgresql.util.PSQLException: ERROR: record "new" has no field "champ.ctrl.table"
merci encore

#10 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 31/12/2014 17:37:11

Bonjour Alex,

J'en "profite" pour  vous présenter mes vœux pour 2015, santé, réussite professionnelle et accomplissement personnel bien sûr smile smile
Je reviens aussi puisque vous m'aviez déjà sortie d'affaire il y a un an (.. mais mes vœux sont quand même sincères..).
Je dois retourner sur des triggers pour cette fois effectuer des opération entre champs de tables différentes.
J' essaie depuis 2 jours et j'ai une difficulté pour aboutir.

Je travaille sur une appli web qui, à partir d'un formulaire charge des données dans postgres, tout cela est OK avec struts.
Maintenant je dois effectuer des opération entre plusieurs tables à la fois pour récupérer le résultat du calcul dans l'une d'elle et l'afficher dans l'Ihm.

SI j'active mon trigger, je plante glassfish, par contre sans le trigger mes données s'enregistrent en bd mais en "non calculées".
Pour faire simple, j'indique mon trigger qui plante (avec 3 tables seulement).

J'ai donc 3 tables :
table1 ==> champ.result.table
table1 ==> champ.tri.table
table2 ==> champ.ctrl.table

voila ce qui ne marche pas ( fonction test)
Ma fonction
-- Function: test()
-- DROP FUNCTION test();
CREATE OR REPLACE FUNCTION test()
RETURNS trigger AS
$BODY$
DECLARE
table1 numeric;
table2 numeric;

BEGIN
SELECT INTO table2 champ.ctrl.table();
SELECT INTO table1 champ.tri.table(), champ.result.table();
NEW.champ.result.table := table1 champ.tri.table* table2.champ.ctrl.table ;
RETURN NEW;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION test()
  OWNER TO postgres;

Ensuite la fonction "test" est appelée directement par pgadmin
CREATE TRIGGER "test"
  BEFORE INSERT OR UPDATE
  ON table1
  FOR EACH ROW
  EXECUTE PROCEDURE test();

et.. ça plante .. j'ai faux quelque part, mais ou ?

Pouvez vous m'éclairer ? , j'ai tenté de multiples "manip" en croyant comprendre..
Merci bien
Daniel

#11 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 30/01/2014 12:32:33

Bonjour,

je vais enlever la déclaration de curseur,
Bien sûr, si vous pouviez m'envoyer des exemples de triggers, ils seront les bienvenus, je vais en avoir besoin, et je pourrai m'en inspirer pour comprendre.
je vous envoie mon mail via MP.

Concernant ma difficulté avec l'exception, j'ai commencé à replonger dans mes codes java.
Je ne sais pas si en insérant une colonne dans ma base directement par ma fonction,  l'exception serait inactive , je vais essayer au cas ou ..
Les explications de ce lien sont maintenant à ma portée :  http://postgresql.developpez.com/docume … atetrigger
Je ne saurai assez vous remercier pour ce sacré coup de main, c'est pas si fréquent d'avoir de l'aide intelligible pour débutant sur des forums
Daniel

#12 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 29/01/2014 18:22:00

bonjour,

voila mon  trigger
-- Trigger: trigger-calc_surfaceutile on article
-- DROP TRIGGER "trigger-calc_surfaceutile" ON article;
CREATE TRIGGER "trigger-calc_surfaceutile"
  BEFORE INSERT OR UPDATE
  ON article
  FOR EACH ROW
  EXECUTE PROCEDURE fonction_calc_surfaceutile();

puis ma fonction :
DECLARE   
list_article CURSOR (article numeric) IS SELECT art_dec_coefchutearticlepopup (numeric), art_dec_surfaceutile (numeric), art_vch_surface(varchar);


BEGIN
IF (art_vch_surface IS NOT NULL) THEN
    NEW.art_dec_surfaceutile := (NEW.art_dec_coefchutearticlepopup * NEW.art_vch_surface);
    END IF;
    RETURN NEW;
END;

Ce qui me donne sur mon panneau Sql
-- Function: fonction_calc_surfaceutile()
-- DROP FUNCTION fonction_calc_surfaceutile();

CREATE OR REPLACE FUNCTION fonction_calc_surfaceutile()
  RETURNS trigger AS
$BODY$
DECLARE   
list_article CURSOR (article numeric) IS SELECT art_dec_coefchutearticlepopup (numeric), art_dec_surfaceutile (numeric), art_vch_surface(varchar);

BEGIN
IF (art_vch_surface IS NOT NULL) THEN
    NEW.art_dec_surfaceutile := (NEW.art_dec_coefchutearticlepopup * NEW.art_vch_surface);
    END IF;
    RETURN NEW;
END;

$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION fonction_calc_surfaceutile()
  OWNER TO postgres;

J'ai compris cette fois mes erreurs d'update(s), enfin je pense....
Mon erreur en dissimulait une autre, mes updates "bouclaient" et ma base n'enregistrait pas ma donnée résultat, et donc glassfish ne répondait pas à mon trigger.
Maintenant que tout semble Ok coté trigger, et Glassfish me renvoie sur une exception :

Exception
javax.servlet.ServletException: javax.ejb.EJBException: Transaction aborted; nested exception is: javax.transaction.RollbackException: La transaction a été marquée comme devant être annulée.
Cause racine
javax.ejb.EJBException: Transaction aborted; nested exception is: javax.transaction.RollbackException: La transaction a été marquée comme devant être annulée.

Cela vient probablement du fait qu'a l'origine je devais entrer manuellement le résultat de ma fonction ( surfaceutile) directement par sa saisie dans mon IHM, .. et maintenant il y aurait collision dan mes données.. c'est que je crois comprendre ?

Est il possible de lever cette exception ( que pour cette donnée) en utilsant le code fonction ou mon trigger ?
Cette méthode ( voir lien ci dessous) est elle intégrable dans ma fonction ?

http://books.google.fr/books?id=kVQk9iq … on&f=false

N'ayant pas cette exception si j'enlevais l'update du trigger, j'ai supprimé l'update du trigger en le positionnant sur after/before + insert >>  pas d'"exception" mais pas non plus d'enregistrement dans ma base
puis j'ai alors déplacé l'update dans ma fonction, mais ça ne change rien.. update = exception

Je vais voir coté jpa / jsp si je peux faire qqchose ( je travaille avec Netbeans et struts) sous linux

En tout cas, maintenant je crois être capable de faire des triggers, certes simples, mais je vais les complexifier en avançant doucement,
daniel

#13 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 28/01/2014 20:56:45

bonsoir, je reviens vers vous prématurément,

j'ai du travailler mon trigger avec " DROP FUNCTION".tout en suivant vos conseils.

Dans postgres (via pgadmin) j'ai différentes parties (fonctions > séquences > tables et fonctions triggers) et dans chaque table je peux encore ajouter des triggers "individuels", très sincèrement je ne vois pas à quoi ça sert mais ça sert sûrement à qqchose ?
Pour faciliter votre lecture, le trigger que je dois mettre en place est fait pour multiplier une surface par un coefficient de chute et ainsi obtenir une surface utile, d’où les noms de mes colonnes (art_vch_surface, art_dec_coefchute.. et art_dec_surfaceutile)

J'ai donc suivi votre procédure sauf que je ne suis pas sûr de la place de mon update

1/ Création de mon trigger dans ma table "article", comme ceci :

-- Trigger: calc_surfaceutile on article
-- DROP TRIGGER calc_surfaceutile ON article;
  CREATE TRIGGER calc_surfaceutile
  BEFORE INSERT
  ON article
  FOR EACH ROW
  EXECUTE PROCEDURE calc_surfaceutile();


2/ implantation de ma fonction avec l'update ( mes updates?),  dans l'espace "triggers" situé après mes toutes mes tables, comme ceci :

BEGIN

-- Mon update de l'existant   
    UPDATE article
    SET NEW.art_dec_surfaceutile = NEW.art_dec_coefchutearticlepopup * NEW.art_vch_surface
    WHERE art_int_id = art
    AND
    art_vch_surface IS NOT NULL;

-- ma fonction calcul appelée par mon trigger   
    IF (art_vch_surface IS NOT NULL) THEN
    NEW.art_dec_surfaceutile := (NEW.art_dec_coefchutearticlepopup * art_vch_surface);
    END IF;

-- mon update après calcul
    UPDATE article
    SET NEW.art_dec_surfaceutile = NEW.art_dec_coefchutearticlepopup * NEW.art_vch_surface
    WHERE art_int_id = art
    AND
    art_vch_surface IS NOT NULL;
   
    RETURN NEW;
END;



Tout ça est ensuite synthétisé directement par postgres et me donne sur mon panneau SQL  :

-- Function: calc_surfaceutile()

-- DROP FUNCTION calc_surfaceutile();

CREATE OR REPLACE FUNCTION calc_surfaceutile()
  RETURNS trigger AS
$BODY$BEGIN   
   
UPDATE article
    SET NEW.art_dec_surfaceutile = NEW.art_dec_coefchutearticlepopup * NEW.art_vch_surface
    WHERE art_int_id = art
    AND
    art_vch_surface IS NOT NULL;
    e ma table qui est prévu p
    IF (art_vch_surface IS NOT NULL) THEN
    NEW.art_dec_surfaceutile := (NEW.art_dec_coefchutearticlepopup * art_vch_surface);
    END IF;

    UPDATE article
    SET NEW.art_dec_surfaceutile = NEW.art_dec_coefchutearticlepopup * NEW.art_vch_surface
    WHERE art_int_id = art
    AND
    art_vch_surface IS NOT NULL;
   
    RETURN NEW;
END;
   
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION calc_surfaceutile()
  OWNER TO postgres;


Je n'ai plus d'erreurs à l'enregistrement du trigger, et sans plantage, pour moi c'est un peu nouveau....
Seulement le résultat du calcul n'est pas enregistré dans le champ qui existe pour cela dans ma table ?

Je me demande si cela ne viendrait pas du fait que j'ai mis BEFORE INSERT, puisque le calcul doit se faire après avoir entré le coef de chute dans mon IHM ?
Je dois peut être mettre AFTER INSERT + UPDATE dans mon trigger, je vais essayer mais demain.... ?  pour cela à priori il faut que j’enlève le précédent, au risque de planter ?

En tout cas je comprend mieux la modélisation d'un trigger, mais j'ai encore de la route à faire pour maîtriser un peu plus postgres

En vous remerciant encore
Daniel

#14 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 28/01/2014 09:30:03

Merci beaucoup pour ce guidage, je vais pouvoir travailler sur mon trigger avec du sens, et tenter une fonction générique (pas à pas) et mes triggers ensuite.
J'ai été sur le lien, c'est pour du 9.3 ( je suis en 9.1 et n'ose pas changer de version..), mais les infos de ce tuto sont quasi toutes exploitables pour ma version.
je vous tiens au courant fin de semaine, j'ai du pain sur la planche..
merci encore.

#15 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 27/01/2014 16:22:38

Merci bien, c'est sympa de m'accorder qq minutes, vos explications sont (pour moi) simples et constructives , ça m'aide vraiment

Donc, si j'ai compris, je crée ma fonction de calcul, je crée mon trigger qui appellera ma fonction précédente, Ok ? en fait c'est pas si compliqué ..
Je travaille avec pgadmin, je les enregistre tous ensemble (je déclare > puis update > puis fonction > puis appel de la fonction ?) ou il faut que je crée mon trigger et ma fonction indépendamment l'un de l'autre ?

Le "NEW resultat" sera directement envoyé dans son champ ?
Alors cette fonction je peux donc aussi l'appeler dans d'autres triggers ?

#16 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 27/01/2014 13:58:21

j'ai tapé trop vite sur mon clavier..

mais ou est ma boulette, ça parait si simple...
C'est pas le fait d'avoir une donnée en varchar ? qui m'empêcherai d'enregistrer mon resultat dans ma base ?

j'ai appliqué différentes "modéles" via internet, mais sans plus..
merci bien de votre coup de pouce

#17 Re : Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 27/01/2014 13:49:54

Bonjour, et merci de me répondre, c'est pas si fréquent quand ces sont des questions de débutants.

J'étais absent ce WE, j'ai corrigé le code comme vous me l'indiquez, maintenant j'ai :
DECLARE
-- ma colonne1_de ma table est numéric et ma colonne2_de matable est en character varying
-- ma colonne2_de matable est en character varying
-- ma colonneresultat_de matable est en numeric

list_matable CURSOR ( matable numeric (10,2) IS SELECT colonne1_de matable ( numeric), colonne2_dematable (varchar), colonneresultat_dematable (numeric);

BEGIN
IF (colonne2_dematable IS NOT NULL) THEN -- colonne2 est varchar ?
NEW.colonneresultat_dematable = NEW.colonne1_dematable * New.colonne2_de ma table
END IF;
UPDATE colonneresultat_dematable
RETURN NEW;
END;


J'ai comme réponse " syntax error .. RETURN NEW

#18 Général » effectuer des opérations (*, / ,..) entre des données d'une meme table » 22/01/2014 18:21:16

MINIX35
Réponses : 16

Bonjour,
je commence postgres depuis qq jours et dois effectuer des opérations d'abord sur une même table et ensuite sur des tables différentes d'une même base.
J'utilise des triggers et connais des difficultés, je n'arrête pas d'avoir "ERROR : dupplicate declaration at or near "xxxxx" LINE ..

Voila ce que je "triture" depuis ce matin, passant de forums en forums.

DECLARE

list_matable CURSOR ( matable numeric (10,2) IS SELECT colonne1_de matable, colonne2_dematable
list_matable CURSOR ( matable varchar) IS SELECT colonneresultat_dematable

BEGIN
IF NEW.colonne2_dematable IS NOT NULL
NEW.colonneresultat_dematable = NEW.colonne1_dematable * New.colonne2_de ma table

RETURN NEW;

END;

et quelles sont les différences entre triggers et fonctions dans postgres


Cela doit pourtant être simple mais je comprends pas qqchose, si vous pouvez m'éclairer un peu
merci par avance

Pied de page des forums

Propulsé par FluxBB