Vous n'êtes pas identifié(e).
Pages : 1
Bonjour a tous,
Voilà je travail en ce moment sur la migration d'une base Oracle vers Postgresql. Or, je me retrouve dans l'incapacité de créer des SYNONYM (alias persistant de nom de table). Connaissez-vous un moyen de palier à ce défaut de Postgresql (qui selon Postgresql n'en est pas un d'ailleurs car il empêche de réaliser une base lourde de sens).
Mon seul résultat google pertinent a été celui-ci : http://archives.postgresql.org/pgsql-pa … g00085.php
qui propose un patch ajoutant cette fonctionnalité à Postgresql 8.1.3 mais je travail sur la dernière version 8.3.7 ... est-ce que ça aurait du sens d'aller essayer de trafiquer les sources de la nouvelle version en essayant d'insérer le code du patch de 2006 là où il faudrait... c'est risqué je pense... les fichiers concernés ont du grandement changé depuis :
+++ postgresql-8.1.3/src/backend/catalog/namespace.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/catalog/pg_synonym.c 2006-03-03 00:50:40.000000000 +0100
+++ postgresql-8.1.3/src/backend/catalog/Makefile 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/catalog/dependency.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/tcop/utility.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/utils/cache/syscache.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/utils/cache/lsyscache.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/commands/synonym.c 2006-03-03 00:52:28.000000000 +0100
+++ postgresql-8.1.3/src/backend/commands/Makefile 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/nodes/equalfuncs.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/nodes/copyfuncs.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/parser/gram.y 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/parser/keywords.c 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/catalog/indexing.h 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/catalog/pg_synonym.h 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/catalog/dependency.h 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/utils/syscache.h 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/commands/synonym.h 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/nodes/parsenodes.h 2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/nodes/nodes.h 2006-03-03 00:43:08.000000000 +0100
Sinon certaines personnes proposent de faire des vues de table mais je ne peut faire d'insertion ou d'update dans ces vues...
Merci pour vos réponses...
@ bientôt
Dernière modification par oracle2pgsql (10/04/2009 10:26:01)
Hors ligne
Sinon certaines personnes proposent de faire des vues de table mais je ne peut faire d'insertion ou d'update dans ces vues...
Si, c'est possible avec le système des rules : voir http://docs.postgresql.fr/8.3/rules.html pour les détails.
Guillaume.
Hors ligne
Merci je vais regarder ça de près...
Hors ligne
Par contre je crois que ça ne va pas m'aider pour faire des alias / synonym de function ...
Hors ligne
Non, en effet. Je vous dirais bien de recréer la même fonction sous un nouveau nom, ou de créer une fonction qui appelle l'autre fonction... mais cela montrerait certainement le peu de connaissance que j'ai des synonymes. Et surtout que je ne connais pas leur intérêt.
Guillaume.
Hors ligne
En faite tous ces synonym ont été créé j'ai l'impression pour donner accès à certain user de la base oracle aux functions, tables d'autres users : ex :
CREATE SYNONYM user_two.funtions_test FOR user_one.function_test;
CREATE SYNONYM user_three.funtions_test FOR user_one.function_test;
Un peu comme si sous Posgresql on voulait qu'un schema ai des alias vers les tables / functions / procédures... d'un autre schema...
dans mon cas tous les schemas ont des alias vers les functions d'un schema particulier sauf un donc je crois que je vais mettre toutes ces functions dans le schema public ;-)
Me voilà avec un nouveau problème par contre qui est la création de type "AS OBJECT" et "AS TABLE OF" qui n'est apparement pas pris en charge par Postgresql mais qui viendrait d'être pris en charge par la version entrepriseDB (http://forums.enterprisedb.com/posts/list/786.page)...
Je cherche encore ;-)
Merci pour votre aide en tout cas
Hors ligne
Je dois être neuneu aujourd'hui
Toute table est un type dans PostgreSQL. Par exemple (je préviens, mon exemple est crétin ):
audreyjg=# create table t1 (id serial, contenusecret text, user_autorise text);
NOTICE: CREATE TABLE will create implicit sequence "t1_id_seq1" for serial column "t1.id"
CREATE TABLE
audreyjg=# create table t2 (id integer, t t1);
CREATE TABLE
audreyjg=# \d t2
Table « public.t2 »
Colonne | Type | Modificateurs
---------+---------+---------------
id | integer |
t | t1 |
J'ai utilisé le type de ma table t1 comme type d'une des colonnes de ma table t2. Bon, c'est poussé à l'extrême, cela n'a aucun intérêt dans ce cadre. Mais j'aurais pu dire que ma fonction machin renvoyait le type t1. Bref, j'ai peut-être pas compris à quoi servait cette syntaxe
Guillaume.
Hors ligne
Pages : 1