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).

#1 Re : Général » Requete devenue soudainement extremement lente » 05/05/2022 16:48:53

Bonjour je ne sais pas si c'est ici que je dois poser ma préoccupation
j'ai un problème et je souhaite une assiste
j'ai deux tables par exemple:

Facture(code verchar(8),date datetime,montant real)  avec le champ code qui est une clef unique
ensuite la table

Lifact(code varchar(8), codart int, qte real) avec les champs (code,codart) qui reprensentent une clef unique

Le champ code du fichier Lifact fait reference à la table Facture....

Lorsque j'exécute ceci dans une seule transaction:

BEGIN TRANSACTION
INSERT INTO FACTURE ('NB0014',NOW(),5000);
INSERT INTO LIFACT ('NB0014','BAR0005',10);
END;
j'ai le message d'erreur suivant: une instruction insert viole la contrainte de clef étrangère, le clef  "code=('NB0014') n'est pas présente dans la table FACTURE

l'erreur est à quel niveau? devais je d'abord enregistrer complètement la première ligne avant de procéder à l'enregistrement de la seconde ligne? et si c'est le cas  je cours le risque d'avoir des informations dans le Fichier FACTURE SANS CORRESPONDANCE DANS LE FICHIER LIFACT.

S.O.S

#2 Re : Général » Transaction » 04/05/2021 10:49:02

comment faire donc? je veux obtenir en même temps les articles présents dans "article" ayant ou non les correspondances dans prixarticle pour une agence précise.

qu'est ce que cette requête me renverrai?
select * from article  left outer join prixarticle on article.idart=prixarticle.idart  and idagence='10'  en plus quelle difference avec celle-ci: select * from article  left outer join prixarticle on article.idart=prixarticle.idart where idagence='10'

#3 Re : Général » Transaction » 04/05/2021 10:26:16

Bonjour,
J'ai un problème et j'aimerai avoir une assistance.
j'ai deux tables dans postgresql article(idart,libelle,poidbrut,poidnet,suivistock.......) ayant pour clef unique idart et prixarticle(idart,prixa,prixd,prixg,prixdgros,idagence,.....) ayant pour clef unique "idart,idagence" en effet cette dernière table doit contenir  les prix concernant plusieurs de nos sites distants... on a une table des sites similaire à ceci site(idagence,libelle,localisation,responsable,telephone,boite postale,,...............)
la table "article" contient tous les articles crées et commercialisés. on a bien évidemment des articles qui n'ont pas encore des prix affectés, et par conséquent n'auront aucune référence dans la table "prixarticle"
le problème que j'ai est le suivant: comment afficher tous les enregistrement de la table "article" ayant des correspondances ou pas dans la table "prixarticle"  pour un site particulier par exemple ayant la reference idagence='10'. la requette suivante ne me donne pas le resultant correct: " select * from article  left outer join prixarticle on article.idart=prixarticle.idart where idagence='10' ". seuls les articles du site '10' et ayant une correspondance dans les deux tables sont renvoyés pourtant j'attends plus d'enregistrement. Alors où est l'erreur?

#4 Re : Général » Transaction » 20/04/2021 20:18:56

Bonsoir chers tous,
j'ai un soucis avec un champs de type timestamp de postgresql 9.6
je suis au Cameroun, il est 19h11min j'ai exécuté la requête suivante "set timezone="Africa/Douala'; afin que le time zone corresponde à celui du Cameroun.

sauf que quand j'insère un enregistrement dans ma base de donnée la date sauvegardée dans le champs de type timestamp est '20h11' soit une heure de plus que l'heure normale!
je ne comprends pas ce qui se passe!
comment corriger définitivement ce type de problème ?
Merci d'avance à vous!

#5 Re : Général » Transaction » 06/04/2021 19:26:13

Je suis perdu!
Dans ce cas que faudra t-il faire? que me conseillez vous de faire pour assurer la cohérence de mes données?

sinon j'aurai un comportement où les données sont insérées dans la table "table1"  sans être insérées dans la table "table2"!! L'insertion dans la table "table2" découle d'un trigger "AFTER INSERT" appliqué sur chaque ligne de la table "table1"...............je n'avance plus...
S.O.S

#6 Re : Général » Transaction » 06/04/2021 17:18:12

Bonsoir à vous chers camarades,
Un soucis qui m'embête sur l'utilisation des triggers.
je voudrais savoir si c'est possible d'annuler l'effet d'une commande INSERT,UPDATE sur une table "Table_emp" lorsque le triggers
"AFTER INSERT/UPDATE" sur chaque ligne de la table "table_emp" ne s'exécute pas correctement.

En d'autre terme je voudrais savoir quel est l'effet d'un TRIGGER "AFTER" appliqué pour chaque ligne lors d'un UPDATE/INSERT. J'ai l'impression que cela n'a aucun effet sur la transaction qui l'a invoquée.

#7 Re : Général » Transaction » 17/03/2021 16:44:18

Bonjour et merci pour votre assistance!
Je programme avec WINDEV Version 24 et je ne trouve pas comment faire.....

#8 Re : Général » Transaction » 17/03/2021 12:45:35

Bonjour,
tant que je ne trouve pas une solution à ce problème je n'avancerai vraiment pas. et C'est très utile pour la suite de mon projet:
Toujours la même préoccupation:
Est ce possible de déterminer le nombre d'enregistrement affecté par INSERT/UPDATE/DELETE sans être dans une procédure stockée? si oui un exemple svp

#9 Re : Général » Transaction » 12/03/2021 09:16:37

Bonjour,
j'ai encore mes idées qui sont confus!
en effet j'ai une table du genre table1(codtab :integer,codel:integer,libeelt: varchar(20)) le champs codel doit être continue, à chaque insertion d'un nouvel enregistrement dans un environnement multiutilisateur, je dois exécuter la requête select (max (codel)+1) pour recupere cette valeur et l'affecter au nouvel enregistrement. le risque de cette méthode est que plusieurs utilisateurs peuvent récupérer la même valeur de codel! Le problème d'intégrité se posera sans doute.

#10 Général » Transaction » 11/03/2021 21:48:00

tchazou
Réponses : 19

Bonsoir à vous,
j'ai besoin de votre assistance au sujet de l'utilisation des transactions dans postgresql
En fait puis je démarrer une transaction dans un trigger ou pas?

#11 Re : Général » Technique » 23/02/2021 09:46:44

Bjr regarder ce bout de code:

j'ai une creer une fonction compte() qui doit en fait me renvoyer le nombre d'enregistrement affecté par une instruction UPDATE/INSERT. Le resultat obtenu dépend de l'endroit ou est placé le UPDATE/INSERT

DECLARE
  nbre integer;
BEGIN
  insert into ffamille(codfam,codsfam,desigfamss)values('17','17','AROMES');
  GET DIAGNOSTICS nbre = ROW_COUNT;
  RAISE NOTICE E'--- Call nbre ---\n%', nbre;
  RETURN nbre;
END;
Lorsque l'instruction  INSERT/UPDATE est à l’intérieur de la fonction comme ci-haut le résultat renvoyé est 1 et c'est correct.

Par contre si je fait plutôt ceci:
DECLARE
  stack integer;
BEGIN
   GET DIAGNOSTICS stack = ROW_COUNT;
  RAISE NOTICE E'--- Call Stack ---\n%', stack;
  RETURN stack;
END;

ensuite j’exécute les deux requêtes suivantes:

insert into ffamille(codfam,codsfam,desigfamss)values('17','17','AROMES');
select compte();
le résultat renvoyé est 0. Ce qui n'est pas bon.

Ou se trouve  l'erreur s'il vous plait!

#12 Re : Général » Technique » 22/02/2021 13:12:11

Bonjour,
J'ai lu ceci https://www.postgresql.org/docs/13/plpg … IAGNOSTICS j'aimerai avoir un bout de code en utilisant la commande UPDATE....FOUND.....//MERCI

#13 Général » Technique » 18/02/2021 19:03:37

tchazou
Réponses : 6

Bonjour à tous,
Je viens de commencer avec Postgresql, j'ai utilisé plusieurs autres bases de données et je voudrai savoir s'il est possible après un "UPDATE/INSERT/DELETE" de connaitre le nombre d'enregistrements affectés.
Cette instruction existe dans d'autre gestionnaires de BD.
Merci pour votre assistance.

Pied de page des forums

Propulsé par FluxBB