Vous n'êtes pas identifié(e).
Pages : 1
Bonjour
J'ai un problème avec une fonction , j'ai 2 table table1(champ1,champ2) et table2(champA , champB)
La table 1 et vide
dans la table 2 champA 4 colonne 1.2.3.4 dans le champB A,B,C,D
Il n y a que le champ1 de la table 1 qui doit être saisie
Ce que j essaie de faire c'est : quant je saisie une valeur dans champ1 la valeur de champB s'enregistre automatiquement de champ2 uniquement si la valeur saisie corespond a une valeur champA
Exemple - si je saisie dans le champ1 la valeur 3 alors le champ2 prendra la valeur C
- si je saisie dans le champ1 la valeur 1 alors le champ2 prendra la valeur A
- si je saisie dans le champ1 la valeur 230 alors dans le champ2 rien ne se passe
Voila ce que j ai fait mais je bloque ..... et vu que je débute je ne sait plus quoi faire HELP !!! ^^....
Je me suis dit fait une fonction et ensuite un triggers
CREATE OR REPLACE FUNCTION table12()
RETURNS trigger AS
$BODY$
begin
NEW.champ1 = &champ1;
NEW.champ2 = 'select table2.champ2
FROM
public.table1,
public.table2
WHERE
table2.champ1 = table1.champ1
AND table1.champ1 = NEW.champ1
'
;
IF NEW.champ1 = table2.champ1
FROM table1 , table2
THEN execute 'insert into table1.champ2 = NEW.champ2';
end if;
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql VOLATILE
CREATE TRIGGER after_insert_ch12
AFTER INSERT
ON table1
FOR EACH ROW
EXECUTE PROCEDURE table12();
Hors ligne
Je ne suis pas certain d'avoir tout compris, mais :
- pourquoi ne pas faire une vue plutôt que modifier les données à l'insertion ?
- si la vue n'est pas une solution, quel est le problème exactement avec votre fonction et votre trigger ? À première vue je dirais que le trigger devrait être déclaré en « BEFORE INSERT » plutôt que AFTER.
Julien.
https://rjuju.github.io/
Hors ligne
Pages : 1