PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

dblink

Technique - général | dblink

Par moktar1er le 02/03/2005 - 12:31

Bonjour.

Soit une base "base1" qui contient la table "base1table1" définie comme:
CREATE TABLE base1table (b1t1id serial CONSTRAINT b1t1id PRIMARY KEY, b1t1var integer);

Soit une base "base2" avec:
CREATE VIEW base1table1 AS SELECT * FROM dblink('dbname=base1','select * from base1table1') AS t1(b1t1id integer, b1t1var integer);

et:
CREATE RULE base1table1 AS ON INSERT TO base1table1 DO INSTEAD select dblink_exec(to_rule(NEW.b1t1var));

sachant:
CREATE FUNCTION to_rule(integer) RETURNS text AS 'SELECT \'insert into base1table1(b1t1var) values (\'||text($1)||\');\' AS result;' LANGUAGE SQL;

Voilà mon problème: si je me met sur "base2", que je fais un SELECT * FROM base1table1; pas de problèmes, je récupère toutes les données. Logique.
Or, si je fais un INSERT INTO base1table1(b1t1var) VALUES (12);, il me sort:
ERREUR: sql error
DETAIL: ERREUR: NEW utilisé dans une requête dans une règle

Mais le pire, c'est que l'insert dans la table "base1table1" de la base "base1" marche quand mĂŞme...

Une petite idée pour comprendre d'où vient l'erreur et ne plus avoir droit à cet hideux message?

Merci.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Informations complémentaires?

Jean-Paul Argudo/ = 2 Mars, 2005 - 13:27

Bonjour,

Pourriez-vous nous donner les informations complĂ©mentaires d'usage : OS utilisĂ© et sa version (distrib linux? laquelle? windows?... etc.)... Idem pour PostgreSQL : quelle version? compilĂ©e par vous-mĂŞme ou installation de binaires?... etc.

Merci pour vos réponses... Une fois que vous aurez répondu là dessus, je tenterai de vous répondre :-)

--

Jean-Paul ARGUDO

www.argudo.org


Linux: Debian Sarge Postgres

moktar1er/ = 2 Mars, 2005 - 15:12

Linux: Debian Sarge
Postgresql: 7.4.6 install d'origine avec la Sarge.
Il n'y a que dblink que j'ai ajouté moi, après avoir récupéré le package de sources de la 7.4.6.
Merci pour le coup d'oeil.


Bon, j'ai tout "droppé" et r

moktar1er/ = 4 Mars, 2005 - 10:52

Bon, j'ai tout "droppé" et retapé, et manifestement ça marche sans erreur cette fois.
J'ai l'impression qu'un moment donné j'ai cumulé ma règle "DO INSTEAD" qui marche avec une "DO" (tout court) qui générait l'erreur, et du coup je ne récupérai que le message d'erreur, même si l'éxecution se faisait convenablement...


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.