Re: [pgsql-fr-generale] Re: [pgsql-fr-generale] Comment retrouver la table à partir d'un OID

From: Stéphane Bunel <stephane(at)stratum-ip(dot)net>
To: Sylvain Benet - Rugama <sylvain(at)rugama(dot)com>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: [pgsql-fr-generale] Re: [pgsql-fr-generale] Comment retrouver la table à partir d'un OID
Date: 2005-03-09 13:16:01
Message-ID: 422EF711.7010604@stratum-ip.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Sylvain Benet - Rugama a écrit :
> J'ai en effet lu dans la doc que l'utilisation de clé primaire OID pour
> les enregistrement n'est pas conseillé.
> Pourtant ce type correspond exactement à mes attentes : Entier non signé
> sur 4 octets, unique quelque soit la table concerné.
> Mais je comprend que ce type soit réserver aux elements systèmes.

En effet. Faire TRES attention avec les imports / exports. Une base
exportée sans attention sera remontée sans problème mais ne fonctionnera
plus correctement, car les OID lors de l'import ne seront bien sur plus
les mêmes puisque recalculés. Heureusement pour vous, pg_dump dispose
d'une option à activer pour permettre la gestion des OID. Mais attention
ce n'est pas un comportement par défaut, d'où une grande attention à
porter sur les opérations de sauvegarde.

> Pour remplacer ce type, je vais donc créer une table UniqueObjectLocator
> qui va simuler le fonctionnement des OID, 1 champ Serial et un champs
> text qui donne le nom de la table. A chaque insertion d'un

Je ne connais pas du tout votre contexte mais ne serait-il par mieux de
faire une table de liaison ?

UniqueObjectLocator :

Votre OID | ref_table_id
int? | foreign key sur table_id de la table Object

Object :
table_id | table_name
serial | text

> enregistrement dans une table, je vais devoir créer "a la main" un
> nouvel enregistrement dans cet table UniqueObjectLocator et y mettre le

Utilisez plutôt un trigger si c'est possible. Cela vous donnera
l'avantage de conserver l'intelligence "métier" au plus proche des données.

> nom de la table associé à cet ID, pour ensuite créer l'enregistrement
> dans la table concerné avec cet identifiant retourné.
>
> Sylvain Benet
(...)

Stéphane.

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Sylvain Benet - Rugama 2005-03-09 17:12:25 Re: Comment retrouver la table à partir d'
Previous Message Hervé Piedvache 2005-03-09 11:36:44 Re: Re: [pgsql-fr-generale] Comment retrouver la table à partir d'un OID