IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

[SQL](débutant)Unicité d'un identifiant sur plusieurs tables


Sujet :

PostgreSQL

  1. #1
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    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 ^^

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    quelle version de base ?

  3. #3
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    j'utilise PostegreSQL version 7.2.1

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Dans ce cas tu dois demander que l'on te change de FORUm

  5. #5
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    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.

  6. #6
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    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)

  7. #7
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    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.

  8. #8
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2014, 12h18
  2. requêtes sql sur plusieurs tables
    Par zahiton dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2005, 11h59
  3. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 17h32
  4. [SQL Access] SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2005, 15h00
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo