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 : Sécurité » Problème pas de mot de passe super utilisateur » 30/07/2019 20:41:12

Bonjour, merci pour vos retours !
En effet yohmartin cela venait du pgpass !

#2 Re : Sécurité » Problème pas de mot de passe super utilisateur » 19/07/2019 16:19:58

Merci pour ton retour Julien, a priori le pg hba fonctionne bien puisque je n'ai pas ce problème pour les autres utilisateurs et des mises à jours ont eu lieu sur ce fichier récemment sans problème de plus j'ai pu constater le même problème sur ma machine perso
Je précise aussi que je travaille sur la 9.3 si cela est utile

#3 Sécurité » Problème pas de mot de passe super utilisateur » 19/07/2019 16:11:11

ari_gold
Réponses : 5

Bonjour a tous,
Gros problème avec mon superutilisateur postgres, en effet ce dernier dispose bien d'un mot de passe mais quand je me connecte a la base de données si je renseigne le mot de passe la connexion fonctionne mais la connexion fonctionne aussi si je renseigne auncun mot de passe je ne comprend pas pourquoi. Dans le pg hba conf la methode est bien en md5 partout. Du coup peut être que quelqu'un ici aurait une solution a ce problème ?
Merci par avance.

#4 Re : PL/pgSQL » Trigger et DBlink » 02/03/2016 11:25:37

Mais le quote nullable marche c'est que pour le champ geometrie, je comprend pas pourquoi, dès que je l'ajoute dans ma fonction ça ne veut plus marcher...
Et je suis tomber sur cette discussio n où la personne qui pose la question a le même message d'erreur que moi mais je ne comprends pas le fin mot de l'histoire
http://forums.postgresql.fr/viewtopic.php?id=1681

#5 Re : PL/pgSQL » Trigger et DBlink » 01/03/2016 17:19:43

Ok je vais m'en contenter alors,
Par contre j'ai un autre problème là, est ce qu'il faut installer un plugin pour quote_nullable? parce que sur mon pc perso ça marcahait nickel et là sur le pc du bureau il me met que l'opérateur n'existe pas...
Merci.

Bon finalement je pense avoir trouver le problème, en effet mon trigger coince au niveau du champ geometrie, est ce qu'il ya une différence de syntaxe entre les champs geometry de postgis et les autres champs?

#6 Re : PL/pgSQL » Trigger et DBlink » 01/03/2016 11:17:48

Bonjour et merci pour ta réponse,
Du coup j'ai modifié mon précédent message en même temps que tu répondais...
Alors si quelqu'un a la réponse à la question de mon message précédent ça serait vraiment cool smile

#7 Re : PL/pgSQL » Trigger et DBlink » 01/03/2016 10:29:17

Bonjour,

Je viens de tester,
Les deux fonction marchent, cependant je n'arrive pas à les utiliser les deux pour une même variable, en effet, j'ai testé :
quote_litteral(quote_nullable(NEW.nom)) mais le problème est que le champ dans la nouvelle table est entouré de quotes, comment puis je corriger cela?

Merci

#8 PL/pgSQL » Trigger et DBlink » 01/03/2016 10:19:29

ari_gold
Réponses : 9

Bonjour,
Je souhaite utiliser la fonction DBlink dans mes trigger afin de mettre à jour une ou plusieurs tables à partir d'une base de données distincte.
Le soucis est que je rencontre quelques problèmes avec la synthaxe :

perform dblink_connect('dbname=database user=postgres password=postgres');
perform dblink_exec('insert into auteur(
                                                         id,
                                                         nom,
                                                         prenom,
                                                         telephone
                                                         )
                               select('||NEW.id||','''||NEW.nom||''','''||NEW.prenom||''','''||NEW.telephone||''');');

Pour les champs contenant des caractères  je suis obligé de mettre des quotes à mes champs "new" pour la concaténation sinon ça ne marche pas.
Mais le problème est que si le champs est vide la reqête ne va pas marcher (rien ne s'ajoute) et si un des champs contient une apostrophe la reqête plante...
Pour que ça marche il faut que la ligne soit entièrement complétée e sans apostrophes ce qui pose problème.
Je voudrais savoir si il est possible de remèdier à ces problèmes.
En vous remerciant par avance.

pgAdmin3, W7

#9 Re : PL/pgSQL » Trigger sur vue » 01/03/2016 09:38:30

Bonjour,

Pour le logiciel il s'agit de geoconcept web, la version web de geoconcept comme son nom l'indique. Cette version ne prend pas les vues alors que la version bureautique le fait, ce qui etait trés prartique, et je me retrouve bien embêté maintenant qu'il faut s'en passer.

Si je voulais passer par des vues avant de faire le trigger c'etait pour éviter de faire les jointures dans les triggers car je me retrouve avec des noms de colonnes ambigus..


Merci pour votre aide.

#10 Re : PL/pgSQL » Trigger sur vue » 29/02/2016 15:50:03

Bon mauvaise nouvelle, le logiciel que j'utilise ne trouve pas la vue matérialisée (alors qu'il trouve les vues mais ne peut les utilisées...), c'est bien ce que je craignais.
Mon premier post semble donc être la solution (?) car je suis obligé d'avoir toutes mes données dans une table pour pouvoir les utilisées, sachant que le logiciel que j'utilise ne permet pas de faire de jointures entre les données.
Ma première question reste donc d'actualité.
Merci

#11 Re : PL/pgSQL » Trigger sur vue » 29/02/2016 15:37:43

D'accord je viens de tester sur ma base, le soucis est que l'on perd le côté dynamique de la vue puisque la vue matérialisée ne se met pas à jour automatiquement, aurait tu une solution à ce problème?
merci

#12 Re : PL/pgSQL » Trigger sur vue » 29/02/2016 15:10:46

Bonjour,
Merci pour votre réponse,
Je sais pas ce qu'est une vue matérialisée, est ce comparable à une table car je doit avoir mon résultat dans une table obligatoirement...

#13 PL/pgSQL » Trigger sur vue » 29/02/2016 14:43:36

ari_gold
Réponses : 8

Bonjour,
Je suis nouveau sur le site et je m'excuse par avance si mon message n'est pas posté au bon endroit ou si la question a dèjà été posée.

J'aimerie faire un trigger dans postgresql sur une vue de manière à obtenir une table identique à la vue.
Je débute avec les triggers et je ne sais pas si ce que je demande est le meilleur moyen d'obtenir ce que je souhaite.

Pour vous éclairer sur ma demande je vous joint le script pour créer les tables et la vue ainsi que le trigger que je tente de faire:

CREATE TABLE auteur
(
num_auteur integer NOT NULL,
nom_auteur character varying (50),
prenom_auteur character varying (50),
telephone_auteur character varying (10),
num_editeur integer,
CONSTRAINT pk_auteur PRIMARY KEY (num_auteur),
CONSTRAINT fk_editeur FOREIGN KEY (num_aediteur),
REFERENCES editeur (num_editeur) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);

CREATE TABLE editeur
(
num_editeur integer NOT NULL,
nom_editeur character varying (50),
tarif_editeur integer,
CONSTRAINT pk_editeur PRIMARY KEY (num_editeur)
);


CREATE VIEW v_auteur_editeur AS
SELECT
auteur.num_auteur,
auteur.nom_auteur,
auteur.prenom_auteur,
auteur.telephone_auteur,
editeur.nom_editeur,
editeur.tarif_editeur
FROM
auteur, editeur
WHERE
auteur.num_editeur=editeur.num_editeur;


CREATE TABLE t_auteur_editeur
(
num_auteur integer NOT NULL,
nom_auteur character varying (50),
prenom_auteur character varying (50),
telephone_auteur character varying (10),
nom_editeur character varying (50),
tarif_editeur integer,
CONSTRAINT pk_auteur_editeur PRIMARY KEY (num_auteur)
);


CREATE OR REPLACE FUNCTION fn_auteur_editeur()
RETURNS TRIGGER AS
$BODY$
BEGIN
IF (TG_OP='INSERT') THEN
      INSERT INTO t_auteur_editeur (
           num_auteur,
           nom_auteur,
           prenom_auteur,
           telephone_auteur,
           nom_editeur,
           tarif_editeur
      )
      VALUES (
           NEW.num_auteur,
           NEW.nom_auteur,
           NEW.prenom_auteur,
           NEW.telephone_auteur,
           NEW.nom_editeur,
           NEW.tarif_editeur
      );
      RETURN NEW; 
END IF;

IF (TG_OP='DELETE') THEN
      DELETE FROM t_auteur_editeur  WHERE num_auteur =  OLD.num_auteur;
      RETURN OLD;
END IF;

IF (TG_OP='UPDATE') THEN
      UPDATE t_auteur_editeur
      SET
           num_auteur = NEW.num_auteur,
           nom_auteur = NEW.nom_auteur,
           prenom_auteur = NEW.prenom_auteur,
           telephone_auteur = NEW.telephone_auteur,
           nom_editeur = NEW.nom_editeur,
           tarif_editeur = NEW.tarif_editeur
      WHERE num_auteur=OLD.num_auteur;
      RETURN NEW;
END IF;
END;
$BODY$
LANGUAGE plpgsql


CREATE TRIGGER tr_auteur_editeur
      INSTEAD OF INSERT OR DELETE OR UPDATE
      ON v_auteur_editeur
      FOR EACH ROW
      EXECUTE PROCEDURE fn_auteur_editeur();


Voila en bref en souhaite avoir une table qui joigne les infos de la table auteur et de la table éditeur à l'image de la vue v_auteur_editeur,
Cependant le trigger ne met pas la table t_auteur_editeur à jour quand je modifie la table auteur.

Pouvez vous me dire si ma démarche est la bonne? et si oui comment adapter ma fonction pour que cela marche?
Merci par avance pour votre aide.

pgAdmin3 , W7.

Pied de page des forums

Propulsé par FluxBB