Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/05/2012, 16h35   #1
VLDG
Membre chevronné
 
Inscription : mars 2002
Messages : 716
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 716
Points : 605
Points : 605
Par défaut METADATA PRIMARY KEY

Bonjour,

quelle est la requête magique pour avoir la clé primaire d'une table ?

j'utilise cela :

Code :
1
2
3
4
SELECT * FROM RDB$INDICES
WHERE RDB$RELATION_NAME = 'TABLE_NAME'
AND RDB$UNIQUE_FLAG=1
AND RDB$FOREIGN_KEY IS NULL
Mais il y a aussi les clés uniques qui sont renvoyés
VLDG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2012, 17h48   #2
Cl@udius
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 860
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 50
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 860
Points : 9 970
Points : 9 970
Salut

Effectivement le critère RDB$UNIQUE_FLAG=1 n'est pas suffisant pour isoler la clé primaire.

Comme ceci, comprenant le nom de la contrainte, le nom de la colonne ainsi que l'index associé:
Code :
1
2
3
4
5
6
7
8
9
10
SELECT
  RC.RDB$CONSTRAINT_NAME,
  IDX.RDB$FIELD_NAME,
  RC.RDB$INDEX_NAME
FROM
  RDB$RELATION_CONSTRAINTS RC
  JOIN RDB$INDEX_SEGMENTS IDX ON (IDX.RDB$INDEX_NAME = RC.RDB$INDEX_NAME)
WHERE
  RC.RDB$CONSTRAINT_TYPE ='PRIMARY KEY' AND
  RC.RDB$RELATION_NAME = 'TABLE_NAME'
@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h46.


 
 
 
 
Partenaires

Hébergement Web