Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 14/11/2016 20:49:50
- reimic5
- Membre
trigger - update colonne par rapport à une autre table
Bonjour,
J'ai deux tables (Table1 et Table2). Je souhaiterais que la colonne 'taux' de la table1 s'update automatique quand la ligne est creer. ceci par rapport a la table2 de la colonne 'taux' en fonction de la colonne 'id_usager'.
Les taux de la Table2 peuvent changer.
Merci pour votre aide.
Table1 - encodages
id id_usager temps taux
111 5 15 105
112 2 20 102
113 4 21
114 1 36
115 5 45
Table2 - usager
id nom taux
1 toto 11
2 titi 102
3 tata 130
4 tutu 14
5 tete 105
Dernière modification par reimic5 (14/11/2016 21:06:30)
Hors ligne
#2 14/11/2016 21:16:52
- rjuju
- Administrateur
Re : trigger - update colonne par rapport à une autre table
Je rate peut être quelque chose, mais pourquoi ne pas tout simplement faire une jointure pour trouver le taux plutôt que dupliquer l'information ?
Julien.
https://rjuju.github.io/
Hors ligne
#3 14/11/2016 21:50:41
- reimic5
- Membre
Re : trigger - update colonne par rapport à une autre table
dans la table1, c'est l'encodage des usagers avec le temps d'intervention avec une colonne date que je n'ai pas ajoute ici. une fois le taux fixe dans la ligne, il ne devra plus etre modifie.
dans la table2, c'est une table des usagers avec leur taux horaire en sachant que se taux pourra etre change a tout moment par le RH.
merci pour votre aide.
Dernière modification par reimic5 (14/11/2016 22:11:19)
Hors ligne
#4 14/11/2016 21:59:32
- rjuju
- Administrateur
Re : trigger - update colonne par rapport à une autre table
D'accord.
Du coup, quelle erreur rencontrez-vous dans votre trigger ?
Julien.
https://rjuju.github.io/
Hors ligne
#5 14/11/2016 22:10:15
- reimic5
- Membre
Re : trigger - update colonne par rapport à une autre table
je ne sais pas l'ecrire.
Hors ligne
#6 14/11/2016 22:17:15
- rjuju
- Administrateur
Re : trigger - update colonne par rapport à une autre table
La documentation fourni tout le nécessaire pour cela : http://docs.postgresql.fr/9.6/plpgsql-trigger.html
Julien.
https://rjuju.github.io/
Hors ligne
#7 14/11/2016 22:23:59
- reimic5
- Membre
Re : trigger - update colonne par rapport à une autre table
je suis en 9.5. je vais voir cela et merci pour votre reponse.
Hors ligne
#8 15/11/2016 17:38:52
- reimic5
- Membre
Re : trigger - update colonne par rapport à une autre table
punaise je n'arrive pas
pouvez-vous m'aider, merci.
Hors ligne
#9 15/11/2016 18:35:02
- gleu
- Administrateur
Re : trigger - update colonne par rapport à une autre table
Qu'avez-vous essayé ?
Guillaume.
Hors ligne
#10 22/11/2016 12:58:44
- reimic5
- Membre
Re : trigger - update colonne par rapport à une autre table
https://s16.postimg.org/4v51a6ez9/Capture5.jpg
---
CREATE TRIGGER tr_insert_taux
after INSERT ON table1
FOR EACH ROW
EXECUTE PROCEDURE fc_insert_taux();
---
create or replace function fc_insert_taux() RETURNS text AS $$
begin
update table1
set table1.taux=table2.taux
where table2.id=table1.id_usager
end;
Dernière modification par reimic5 (22/11/2016 16:06:58)
Hors ligne
#11 22/11/2016 22:53:38
- rjuju
- Administrateur
Re : trigger - update colonne par rapport à une autre table
Si vous regardez la documentation (http://docs.postgresql.fr/9.6/plpgsql-t … er-example par exemple), il y a déjà 2 erreurs :
- vous devriez avoir un trigger BEFORE INSERT
- vous devriez modifier NEW.taux plutôt que faire un update (qui à vue de nez ne fera pas du tout ce que vous voulez)
Julien.
https://rjuju.github.io/
Hors ligne
#12 23/11/2016 12:08:33
- reimic5
- Membre
Re : trigger - update colonne par rapport à une autre table
voici comment j'ai fait, si ca peut servir a une autre personne.
--trigger tr_insert_taux
CREATE TRIGGER tr_insert_taux
BEFORE INSERT
ON public.table1
FOR EACH ROW
EXECUTE PROCEDURE fc_insert_taux();
--fonction fc_insert_taux
begin
NEW.taux := (SELECT taux FROM table2 WHERE id = NEW.id_usager);
RETURN NEW;
end;
merci.
Hors ligne