|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mai 2003 Messages : 158 ![]() |
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 ^^ |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2005 Messages : 2 320 ![]() |
quelle version de base ?
|
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mai 2003 Messages : 158 ![]() |
j'utilise PostegreSQL version 7.2.1
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2005 Messages : 2 320 ![]() |
Dans ce cas tu dois demander que l'on te change de FORUm
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 131 ![]() |
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.
|
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : mai 2004 Messages : 338 ![]() |
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) |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : mai 2005 Messages : 147 ![]() |
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. |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : mai 2004 Messages : 338 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com