Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: determiner les champ de clef primaire d'une


  • From: Stéphane BUNEL <stephane(at)stratum-ip(dot)net>
  • To: Laurent Mesuré <laurent(dot)mesure(at)free(dot)fr>
  • Cc: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
  • Subject: Re: determiner les champ de clef primaire d'une
  • Date: Wed, 07 Jun 2006 18:56:11 +0200
  • Message-id: <4487052B(dot)406(at)stratum-ip(dot)net>

Laurent Mesuré a écrit :
Stéphane BUNEL a écrit :

Laurent Mesuré a écrit :

Bonjur,


Bonjour,

ayant une table je voudrais extraire la liste des champs de la clef primaire.

j'"essaye avec les tables pg_class,pg_index, mais du coup je me trouve confronté au type int2vector. Du coup, je suis sur qu'il y a surement une methode plus simple, mais je ne la trouve pas.


Si quelqu'un a une idée


Quelle version de PG utilisez-vous ?

Quel est votre contexte ? Pour un besoin _ponctuel_, psql vous renseignera par la commande \d <nom_table>. De là un grep peux suffire à isoler les informations recherchés.

ex:

safari=# \d library
  Table "public.library"
 Column | Type | Modifiers
--------+------+-----------
 key    | text | not null
 value  | text |
Indexes:
    "library_pkey" PRIMARY KEY, btree ("key")




Non j'en ai besoin de facon recurrente. Dans une application j'ai besoin d'extraire les champs de clef primaire pour la construction d'objet (en php en fait). Du coup, il me faut bien passer par un SELECT.

postgresql 8.1 pour la version

Pour inspiration j'ai testé avec un PG8.0 cette requête :

SELECT
ns.nspname as "le schema", cl.relname as "a la table", co.conname as "avec une cle primaire", at.attname as "colonne"
FROM
	pg_constraint co
	JOIN pg_class cl
		ON cl.oid = co.conrelid AND co.contype = 'p'
	JOIN pg_namespace ns
		ON ns.oid = co.connamespace
	JOIN pg_attribute at
		ON at.attrelid = co.conrelid AND at.attnum = ANY( co.conkey )



Qui donne une ligne pour chaque colonne appartenant à la clé primaire d'une table : le schema | a la table | avec une cle primaire | colonne
------------------+-------------------------+------------------------------+-------------------
public | person_title | person_title_pkey | person_title_id public | contract_type | contract_type_pkey | contract_type_id public | department | department_pkey | department_id
(...)
service_mail | forward | forward_pkey | ref_box_id service_mail | forward | forward_pkey | address service_mail | domain | domain_pkey | domain_id

Stéphane.








Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group