Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2005, 16h54   #1
Membre du Club
 
Avatar de yoshï
 
Inscription : mai 2003
Messages : 158
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 158
Points : 41
Points : 41
Par défaut [SQL](débutant)Unicité d'un identifiant sur plusieurs tables

Bonjour,
j'ai un léger problème, après avoir créé 3 tables différentes ayant une colonne en commun (identifiant), je souhaiterais vérifier lors de l'insertion d'un n-uplets dans l'un de ces tableaux, l'unicité de la valeur identifiant sur les 3 tables. En gros j'aimerais faire une contrainte d'unicité sur les 3 tables.
On pourra insérer (le login jo) dans la table administrateur que si il n'est pas present dans la colonne login des 3 tables.

Je ne sais pas si je suis clair....
Merci d'avance pour votre aide ^^
yoshï est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2005, 16h57   #2
Rédacteur/Modérateur
 
Inscription : janvier 2005
Messages : 2 320
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 320
Points : 2 368
Points : 2 368
quelle version de base ?
Jaouad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2005, 17h07   #3
Membre du Club
 
Avatar de yoshï
 
Inscription : mai 2003
Messages : 158
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 158
Points : 41
Points : 41
j'utilise PostegreSQL version 7.2.1
yoshï est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2005, 17h14   #4
Rédacteur/Modérateur
 
Inscription : janvier 2005
Messages : 2 320
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 320
Points : 2 368
Points : 2 368
Dans ce cas tu dois demander que l'on te change de FORUm
Jaouad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2005, 21h39   #5
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
A priori, je passerais par un trigger qui se charge de vérifier que l'identifiant n'est pas présent dans les tables en question.
Quentin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2005, 11h40   #6
Membre éclairé
 
Avatar de Strab
 
Inscription : mai 2004
Messages : 338
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2004
Messages : 338
Points : 313
Points : 313
Tu peux utiliser les OID : C'est une sorte de colonne cachée présente dans toutes les tables mais que tu peux voir et utliser :

SELECT oid,* from matable;

Elle est de type OID.
C'est un identifiant unique de toutes les lignes du SGBD. Avec ça tu n'as pas besoin de remplir ton champ identifiant et de vérifier l'unicité.

Sinon tu peux aussi rajouter deux contraintes sur chacune de tes trois tables du type (par exemple dans table1):
check (id not in table2)
check (id not in table3)

(pas du tout sûr de la syntaxe). Voila avec ça plus la doc de PostgreSQL tu devrais t'en sortir (si ce n'est déjà fait, ma réponse est tardive)
Strab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2005, 09h53   #7
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
Pour les OID, il n'est pas conseillé de les prendre comme identifiant car à partir d'un certain nombre, cette variable boucleet donc tu peut avoir deux OID identiques.

champijulie.
champijulie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2005, 22h39   #8
Membre éclairé
 
Avatar de Strab
 
Inscription : mai 2004
Messages : 338
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2004
Messages : 338
Points : 313
Points : 313
Il me semble que les OIDs sont stockés sur 4 octets, il faut quand même une grosse base avant de boucler, même si je reconnais de telles bases existent. Mais leur utilisation n'est pas courante, même dans un cadre professionnel.

Le seul inconvénient que je ferais à l'utilisation des OIDS, c'est qu'on est dépendant du système PostgreSQL.

Strab
Strab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h10.


 
 
 
 
Partenaires

Hébergement Web