Bonjour

Je débute et mes connaissances sont limitées, et je bloque... seul, je ne trouve pas de solution.

J'ai un problème avec une fonction , j'ai 2 tables table1(champ1,champ2) et table2(champA , champB)


La table 1 et vide


Dans la table2 champA 4 colonnes 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 : quand je saisis une valeur dans champ1, la valeur de champB s'enregistre automatiquement de champ2 uniquement si la valeur saisie correspond à une valeur champA

Exemple - si je saisis dans le champ1 la valeur 3 alors le champ2 prendra la valeur C ;
- si je saisis dans le champ1 la valeur 1 alors le champ2 prendra la valeur A ;
- si je saisis dans le champ1 la valeur 230 alors dans le champ2 rien ne se passe.

Voilà ce que j’ai fait, mais je bloque ..... et vu que je débute je ne sais plus quoi faire HELP !!! ^^....

Je me suis dit fait une fonction et ensuite un trigger

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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();