Bonjour,

j'ai créée une fonction sous postgresql qui possède comme paramètre la colonne qui faut remplir dans une table temporaire.
En renseignant la colonne dans la fonction,je sélectionne l' id des candidats et leur résultats d'une autre table et je les insert dans la table temporaire pour le type AC.(la première insertion passe très bien )

puis je fais pareil pour le type BC, mais j'ai un problème de clé primaire,y en a qui on passé les deux exams ce qui fais je pourrai pas faire un insert (error duplication de clé primaire), j'ai trouvé comme solution de faire un update quand le candidat existe déjà dans la table mais j'arrive pas a le faire. Faire un fonction qui fait un insert or update.

Est ce que je peux avoir un coup de main merci d'avance.

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
create or replace function insert_resultat(character varying(15)) 
RETURNS VOID as
$body$
declare
tepcode ALIAS FOR $1;
Begin
 
/* insertion pour examen ac */
if (code='AC') then 
insert into table_temp(id_can,resultat_ac)(
select t3.id_can,t1.ict_resultat_examen  ......
 
if (code='BC') then 
insert into table_temp(id_can,resultat_bc)(
select t3.id_can,t1.ict_resultat_examen  ......
id_can----------resultat_ac------------ resultat_bc
"050959501284" ----- " " ---------------- "0"
"060159501324"------ " " ---------------- "3"
"030359500567" ---- "8" ---------------- " "
"070359501493" ----- " " ---------------- "3"
"061059502007" ----- " " ---------------- "1"
"891059564967" ----- "0" ---------------- " "
"030359500567" ---- " " ---------------- "0"

par exemple le candidat "030359500567" à passer les deux examens et moi je veux que les resultats s'affiche dans une seule ligne sans avoir de doublons de id_can (ici j'ai eu un doublon parceque j'ai créée la table sans clé primaire) mais si je crée id_can comme clé primaire j'ai un probleme comme quoi la clé existe déja