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

#51 Re : PL/pgSQL » cannot perform INSERT RETURNING » 06/02/2017 12:27:32

Et malheureusement non, j'ai tenté mais j'ai ce message qui apparait : ERROR:  RETURNING list's entry 30 has different type from column "stat_view"

Si j’interprète correctement, c'est parce qu'il y a dans ma vue des colonnes qu'il n'y a pas dans la table source. Alors j'ai essayé de faire quelque chose du genre

RETURNING table.nom,table.wkb_geometry,(...)

, mais pas mieux...

Les new.col1 renvoient des valeurs type 'blablabla', habituellement ça fonctionne :-)

#52 PL/pgSQL » cannot perform INSERT RETURNING » 06/02/2017 11:29:38

Geo-x
Réponses : 14

Bonjour @ tous.

J'ai créé une vue avec quelques règles associées pour le cas notamment, d'insertions.

Cette règle semble cependant connaître quelques dysfonctionnements puisque je reçois le message d'erreur suivant : ERROR:  cannot perform INSERT RETURNING on relation "view_table" suivi de HINT:  You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause.

Je ne comprends pas ce que cela veut dire. Ma règle d'insertion ressemble à ceci (en simplifié pour vous éviter le gros pavé) :

CREATE OR REPLACE RULE "_INSERT" AS
ON INSERT TO view_table DO INSTEAD  INSERT INTO table (id, wkb_geometry, nom) 
VALUES (new.id, new.wkb_geometry, new.nom);

Avez-vous une idée qui me premettrait de sortir de ce pétrin ?

Par avance merci.

Geo-x

#53 Re : PL/pgSQL » Une ligne vide en résultat plutôt que rien » 26/01/2017 14:57:55

Ce n'est pas vraiment fait pour

Je suis bien d'accord sur cet aspect théorique, mais dans la pratique, non seulement (dans des cas hyper rares je vous l'accorde) c'est utile, mais en plus, votre technique fonctionne très très bien et je vous en remercie !

Geo-x

#54 PL/pgSQL » Une ligne vide en résultat plutôt que rien » 26/01/2017 12:15:58

Geo-x
Réponses : 2

Bonjour @ tous.
J'ai un problème tout bête, si je fais cette requête :

SELECT nom FROM table WHERE nom = 'azerty'

et que la seule valeur présente dans ma table est qwerty je vais avoir en résultat, le nom de ma colonne sans tuple.
Si j'utilise la commande COALESCE, je n’aurais guère mieux.

Est-il possible d'avoir une tuple vide ou avec un résultat par défaut ? Et si oui comment faire ?

Par avance merci.

Geo-x

#55 Re : PL/pgSQL » quote to NULL » 26/01/2017 12:05:55

Après plus de deux ans de test, je tenais simplement à préciser que cette façon de faire est la plus sûre, même si elle ralentit un tantinet la requête associée.

Geo-x

#56 Re : PL/pgSQL » ERROR: cache lookup failed for function 126242919 » 20/01/2017 11:58:31

Et oui mais je n'ai malheureusement pas la main dessus... je vous tiens au courant, le jour ou tout sera à jour.

#57 PL/pgSQL » ERROR: cache lookup failed for function 126242919 » 20/01/2017 11:30:19

Geo-x
Réponses : 3

Bonjour @ tous.

Je vous explique mon problème, j'ai développé un trigger sur l'ensemble des table de mes bases de données. Le but de ce trigger est que lorsqu’il y a une mise à jour dans n'importe quelle table, je souhaite désactiver cette fonction et mettre à jour une table servant à indiquer qu'il y eu une mise à jour.
Ma fonction trigger ressemble à ceci :

UPDATE a_admin_backup SET backup = 1;
DROP FUNCTION public.backup() CASCADE;

RETURN NEW;

Donc rien de compliqué et tout fonctionne à merveille sauf lorsque je tente de faire directement une mise à jour via pgAdmin ou là j'ai ce message qui apparait :

ERROR: cache lookup failed for function 126242919

précédé de

PL/pgSQL function "backup" line 3 at SQL statement

qui indique sa diufficulté à gérer le DROP function.

Je suis sur cette version de Postgres : "PostgreSQL 9.1.9, compiled by Visual C++ build 1500, 64-bit" (Et oui je sais qu'il s'agit d'une vieille version, qui n'est plus supporté ;-) )

Que puis-je faire pour que cela fonctionne correctement ?

Par avance merci

Geo-x

#58 Re : PL/pgSQL » pg_dump si nécessaire » 08/12/2016 11:55:23

Tant pis et dommage à la fois, merci beaucoup.

Geo-x

#59 PL/pgSQL » pg_dump si nécessaire » 08/12/2016 11:39:52

Geo-x
Réponses : 2

Bonjour @ tous.

Je souhaitais savoir s'il était possible, d'une manière ou d'une autre, de ne lancer un pg_dump qu'en cas de modification d'une Base De Données ?

Par avance merci de votre aide.

Geo-x

#60 Re : PL/pgSQL » Lister noms de colonnes associées à une séquence » 14/11/2016 14:34:28

Ah oui d'accord, je n'avais pas pensé à ces possibilités, merci du partage de savoir.

Si je résume, il n'est donc pas possible de détecter les colonnes impactées par une séquence, à moins qu'elles ne soient directement créées en serial.

Merci beaucoup pour toutes ces précisions Julien.

Geo-x

#61 Re : PL/pgSQL » Lister noms de colonnes associées à une séquence » 14/11/2016 14:23:05

Bonjour Julien et merci de votre réponse.

Quand vous dites qu'il n'est pas forcément nécessaire d'associer une séquence à une colonne, je ne comprends pas, à quoi peut être rattachée une séquence autre que des colonnes ?

#62 PL/pgSQL » Lister noms de colonnes associées à une séquence » 14/11/2016 12:17:50

Geo-x
Réponses : 6

Bonjour @tous.

J'essaie de construire une requête permettant de lister les colonnes concernées par une séquence.

Je sais lister les séquences :

SELECT * FROM pg_class c WHERE c.relkind = 'S';

mais je n'arrive pas à trouver l'endroit ou je peux trouver la colonne associée.

Auriez-vous une idée ?

Par avance merci.

Geo-x

#63 Re : PL/pgSQL » Problème d'utilisation du pg_restore » 28/10/2016 12:09:33

Merci pour l'information Julien (concernant la dépréciation de la version 9.1).

Concernant mon problème vous m'avez parlé, dans votre avant-dernier post du fichier "pgpass".
Je suis donc allé voir de ce côté-là et en lisant la documentation j'ai compris qu'il fallait que j'indique, suite à la table destination les options -h -p -U.
A partir de là, j'ai utilisé le code proposé dans votre dernier post et cela fonctionne à merveille !

Un grand merci pour votre aide.

Geo-x

#64 Re : PL/pgSQL » Problème d'utilisation du pg_restore » 27/10/2016 14:45:19

Encore et toujours là Julien et une nouvelle fois merci de votre aide.

"bdd_provisoire" correpond au nom que je souhaite donner à la nouvelle BDD, j'aurais aussi pu mettre "choux-fleurs".

Si cette BDD existe déjà alors la remplacer. J'ai déjà testé avec "--if-exists" mais j'ai en retour le message :

illegal option --if-exists

(Je suis en version 9.1.9 de Postgres).

Alors j'ai utilisé -w dans l'objectif justement qu'il ne me demande pas de mot de passe étant donné que je lance cette commande en "Off" ou invisible pour l'utilisateur, il ne me faut donc pas de message de ce genre.

Je vais tester en ajoutant/enlevant les options  "-h et/ou -p et/ou -U" voir ce que ça peut donner...

#65 PL/pgSQL » Problème d'utilisation du pg_restore » 27/10/2016 14:09:14

Geo-x
Réponses : 4

Bonjour @ tous.

Ok, le sujet fait légèrement doublon avec mon dernier post mais promis, le contenu est différent, je m'explique.

Je tente de mettre en place une restauration de backup dans ma base de données.

Je souhaiterais que cette restauration, crée la BDD si elle n'existe pas ou la remplace si elle existe.

Alors j'ai testé mais en vain, j'ai testé ça :

pg_restore -h localhost -p 5432 -U postgres -C -d bdd_provisoire D:\mybackup.backup

Mais là j'ai "bdd_provisoire does not exist"

pg_restore -C -d bdd_provisoire -w D:\mybackup.backup

Mais là j'ai "fe_sendauth: no password supplied"

Auriez-vous une idée sur la façon de procéder ?

Par avance merci.

Geo-x

#66 Re : PL/pgSQL » pg_restore en SQL » 20/10/2016 13:42:02

C'est bien ce qu'il me semblait.

Merci rjuju.

Geo-x

#67 PL/pgSQL » pg_restore en SQL » 20/10/2016 12:11:33

Geo-x
Réponses : 2

Bonjour@ tous.

Savez-vous s'il est possible de lancer la commande pg_restore par l’intermédiaire d'une requête SQL ?

En vous remerciant par avance.

Geo-x

#68 Re : PL/pgSQL » Sélection sur une seule ligne à partir d'un tableau » 30/09/2016 09:47:07

Ah, je ne savais pas que c'était possible de faire un Max sur du texte.

Merci beaucoup de cette information !

Geo-x

#69 Re : PL/pgSQL » Sélection sur une seule ligne à partir d'un tableau » 26/09/2016 11:55:43

Bonjour Marc.

Alors en effet ce pourrait être une belle solution si je parlais de chiffres uniquement, mais est-il possible de faire la même chose par exemple avec du caractère ? (Et oublions la contrainte de la question qui était de ne pas dupliquer le select).

#70 Re : PL/pgSQL » Sélection sur une seule ligne à partir d'un tableau » 26/09/2016 11:13:58

Je relance le sujet puisque je suis à nouveau confronté à une problématique similaire à laquelle je n'arrive pas à répondre.

#71 Re : PL/pgSQL » Comparaison de deux champs » 13/04/2016 10:22:51

Perfecto ! (comme toujours)

Merci beaucoup !

#72 PL/pgSQL » Comparaison de deux champs » 13/04/2016 10:07:29

Geo-x
Réponses : 2

Bonjour @ tous.

J'ai une question toutes bête à laquelle je suis confronté.

Je souhaiterais faire une comparaison entre le contenu de deux champs pour voir si une partie du champ 1 est contenue dans un champ 2.

Exemple (qui ne marche pas bien sûr dans ce cas) :

SELECT 1 WHERE 'CHAMP' ILIKE 'ACHAMPE'

En vous remerciant par avance.

Geo-x

#73 Re : PL/pgSQL » Faire un pg_dump en modifiant le nom de la table » 28/01/2016 16:45:53

Oui ça peut marcher également et je pense que je vais faire comme ça c'est encore plus simple !

Merci beaucoup pour votre aide !

Geo-x

#74 Re : PL/pgSQL » Faire un pg_dump en modifiant le nom de la table » 28/01/2016 16:24:52

Et non, c'eut été trop beau !

L'idée c'est, par exemple, dans ma BDD1 j'ai une table TABLE1 que je dois mettre à jour avec une table TABLE2 présente dans la BDD2 et qui a le même nom que la TABLE1. Du coup il faudrait que je puisse copier cette TABLE2 dans la BDD1 pour faire la mise à jour sans écraser l'autre ou sans être gêné.

Jusqu'à maintenant je faisais avec un dblink ce qui me permettait de faire la modification du nom, mais le problème c'est qu'il faut déclarer les champs 1 par 1 et là ça devient un peu trop lourd à gérer.

Alors en effet, comme vous dite, ce que je peux toujours faire c'est renommer ma TABLE2 avant l'import mais c'est aussi ce que je voulais éviter.

Geo-x

Pied de page des forums

Propulsé par FluxBB