Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 8. Types de donn�es | Avance rapide | Suivant |
Les identifiants d'objets (OID) sont utilis�s en interne par PostgreSQL comme cl�s primaires de diff�rentes tables syst�me. De plus, une colonne syst�me OID est ajout�e aux tables cr��es par les utilisateurs sauf si WITHOUT OIDS est indiqu� � la cr�ation de la table ou quand la variable de configuration default_with_oids est configur�e � false. Le type oid repr�sente un identificateur d'objet Il a aussi diff�rents types alias : regproc, regprocedure, regoper, regoperator, regclass, et regtype. Tableau 8-19 donne un aper�u.
Le type oid est actuellement un entier de quatre octets. Du coup, il n'est pas suffisamment grand garantir l'unicit� dans une grosse base de donn�es, o� m�me dans une tr�s grosse table. Du coup, l'utilisation d'une colonne OID comme cl� primaire d'une table cr��e par un utilisateur est d�conseill�e. Les OID surtout destin�s � �tre des r�f�rences vers les tables syst�me.
Note�: Les OID sont inclus par d�faut dans les tables cr��es par un utilisateur dans PostgreSQL 8.0.25. N�anmoins, ce comportement est amen� � changer dans une future version de PostgreSQL. �ventuellement, les tables cr��es par un utilisateur n'incluront pas de colonne syst�me OID sauf si WITH OIDS est sp�cifi� lors de la cr�ation de la table ou lorsque la variable de configuration default_with_oids est initialis�e � true. Si votre application requiert la pr�sence d'une colonne syst�me OID dans une table, elle devrait indiquer WITH OIDS lors de la cr�ation de la table pour s'assurer de sa compatibilit� avec les prochaines versions de PostgreSQL.
Le type oid lui m�me dispose de peu d'op�rations � part la comparaison. N�anmoins, il peut �tre transtyp� en entier (integer) et manipul� en utilisant les op�rateurs habituels des entiers. (Attention aux possibles confusions entre les entiers sign�s et non sign�s si vous le faites.)
Les types alias de l'OID n'ont pas d'op�rations � eux sauf pour les routines sp�cialis�es en entr�e et en sortie. Ces routines sont capables d'accepter et d'afficher des noms symboliques pour les objets syst�mes, plut�t que la valeur num�rique brute que le type oid utiliserait. Les types alias permettent de simplifier la recherche des valeurs OID pour les objets. Par exemple, pour examiner les lignes pg_attribute en relation avec une table matable, vous pourriez �crire
SELECT * FROM pg_attribute WHERE attrelid = 'matable'::regclass;
plut�t que
SELECT * FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'matable');
Bien que cela ne semble pas si difficile, c'est toujours trop simplifi�. Une sous-s�lection bien plus compliqu� serait n�cessaire pour s�lectionner le bon OID s'il existait plusieurs tables nomm�es matable dans diff�rents sch�mas. Le convertisseur d'entr�es regclass g�re la recherche de la table suivant le param�trage du chemin des sch�mas et il fera donc la <<�bonne recherche�>> automatiquement. De fa�on similaire, convertir une OID d'une table en regclass est facile pour l'affichage symbolique d'un OID num�rique.
Tableau 8-19. Types identifiants d'objet
Nom | R�f�rence | Description | Exemple |
---|---|---|---|
oid | tous | identifiant d'objet num�rique | 564182 |
regproc | pg_proc | nom de fonction | sum |
regprocedure | pg_proc | fonction avec les types d'arguments | sum(int4) |
regoper | pg_operator | nom d'op�rateur | + |
regoperator | pg_operator | op�rateur avec types d'arguments | *(integer,integer) ou -(NONE,integer) |
regclass | pg_class | nom de relation | pg_type |
regtype | pg_type | nom de type de donn�es | integer |
Tous les types alias d'OID acceptent des noms avec un pr�fixe de sch�ma, et affichent des noms pr�fix�s par un sch�mas si l'objet ne peut �tre trouv� dans le chemin de recherche courant sans pr�fixe de sch�ma. Les types alias regproc et regoper n'acceptent que des noms uniques en entr�e (sans surcharge), si bien qu'ils sont d'un usage limit�. Dans la plupart des cas, regprocedure ou regoperator sont plus appropri�s. Pour regoperator, les op�rateurs unaires sont identifi�s en �crivant NONE pour les op�randes non utilis�s.
Un autre type identifiant utilis� par le syst�me est xid, ou identifiant (abr�g� xact) de transaction. C'est le type de donn�es des colonnes syst�mes xmin et xmax. Les identifiants de transactions sont des quantit�s sur 32 bits.
Un troisi�me type identifiant utilis� par le syst�me est cid, ou identifiant de commande. C'est le type de donn�es des colonnes syst�mes cmin et cmax. Les identifiants de commandes sont aussi des quantit�s sur 32 bits.
Un dernier type identifiant utilis� par le syst�me est tid, ou identifiant de tuple (identifiant de ligne). C'est le type de donn�es des colonnes syst�me ctid. Un tuple est une paire (num�ro de bloc, index de tuple dans le bloc) qui identifie l'emplacement physique de la ligne dans sa table.
(Les colonnes syst�mes sont expliqu�es plus en d�tail dans Section 5.4.)
Pr�c�dent | Sommaire | Suivant |
Types composites | Niveau sup�rieur | Pseudo-Types |