Sql...connaitre la cle primaire dune table

Résolu/Fermé
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 - 4 juin 2008 à 17:57
 Myste - 4 févr. 2009 à 07:55
Bonjour,
voila je cherche, au moyen dune requete dans une page php, a connaitre quelle est champ clé primaire de la table donnée. ou bien sans forcement connaitre son nom au moins pouvoir lappeler.
en vous remerciant, xav
A voir également:

7 réponses

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
4 juin 2008 à 18:15
Bonjour.

Une requête qui peut t'aider : DESC MaTable

Ca te renvoie les informations sur MaTable...
4
X-Fan Messages postés 805 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 janvier 2010 19
4 juin 2008 à 18:38
Voilà qui peut aider:

Get primary key columns

Author Nigel Rivett


declare @TableName varchar(128)
select @TableName = 'mytbl'

select c.COLUMN_NAME
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ,
INFORMATION_SCHEMA.KEY_COLUMN_USAGE c
where pk.TABLE_NAME = @TableName
and CONSTRAINT_TYPE = 'PRIMARY KEY'
and c.TABLE_NAME = pk.TABLE_NAME
and c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME


2
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 3
5 juin 2008 à 15:49
et la réponse a été donnée,

'desc' synonyme de 'describe' et de 'show columns from'

http://dev.mysql.com/doc/refman/5.0/fr/describe.html

voila , je vous remercie quand meme.
1
Merci, 'desc' ça me convient aussi.
0
Je reviens avec un petit code très simple d'utilisation pour les néophites (trouvé apres quelques minute de recherches) ->

////////////////////////////////////////////////////////////////
//........Connexion à la base de donnée blablabla........ //
// $res = mysql_query('DESCRIBE NOM_DE_LA_TABLE');
// $primary_key = '';
// while($line = mysql_fetch_array($res))
// {
// if(isset($line['Key']) && $line['Key'] == 'PRI'){
// $primary_key = $line['Field'];
// break;
// }
//}
// Affichage du champ primaire :)
//echo $primary_key;
/////////////////////////////////////////////////////////////
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
X-Fan Messages postés 805 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 janvier 2010 19
4 juin 2008 à 18:32
Ben je vois pas le but de chercher le champ clé primaire d'une table que tu as créer toi même et dont tu connais la structure. Voilà, je ne crois pas avoir déjà vu quelqu'un chercher un truc pareil tellement c'est étrange et un peu inutile.

Pour vérifier si ça existe ou pas c'est ca:

$count = mysql_num_rows(SELECT * FROM ".$table." WHERE PRIMARY="."$TabVar[1]" );

Si $count = 0 alors n'existe pas encore donc insert sinon update.

Une façon de faire. Mais pour trouver le champ primaire ça je ne sais pas et je ne comprend pas l'idée. Si quelqu'un d'autre a déjà fait ça, qu'il m'en explique le but. O_O


EDIT: SQL c'est le select et ensuite @@row_count
0
Xil Messages postés 350 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 11 juin 2009 257
19 sept. 2008 à 16:12
Par exemple, quand tu fais un script de mise à jour générique, qui peut mettre à jour un champs choisi par l'utilisateur, d'une table choisie par l'utilisateur et dont tu ne sais ni les clés primaire ni le nombre de clé.

Il faut donc que le script soit capable de repérer les clés.

Ou encore si tu veux simplement pouvoir les afficher.
0
Pour ma part j'ai projet dans mon école qui consiste à refaire un gestionaire de base de données.
n l'ocurence, j'évite qu'on puisse DROP la colone primary key, en voici un d'exemple d'utilisation non ? :)
0
X-Fan Messages postés 805 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 janvier 2010 19
4 juin 2008 à 18:02
C'est parce que, comment tu veux utiliser une table dont tu ne connais pas le contenu? C'est un peu bête comme situation non??? En général, quand tu crées une table, tu connais sa structure et son contenu pour justement pouvoir l'utilisé. Sinon elle n'a aucun but.
-5
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 3
4 juin 2008 à 18:19
c vrai c'est un peu vague...
mais le but du script php est de recevoir un bloc compressé de données contenant des manipulations a faire sur une base mysql au multiple table.

en loccurence je connais bien le nom de la table dans laquelle je vais faire des creations, modifications et suppressions.
seulement pour massurer qu'il sagisse bien dune creation ou dune modification, je veux tester voir si les valeurs ne sont pas deja presentes.
ex=si pour une modification la valeur nexiste pas alors ca sera une creation, et inversement dans le cas dune creation.

pour connaitre son existence au sein de la table je dois interroger cette table en demandant il connait deja cette clé primaire(extraite du bloc compressée), mais comment connaitre le nom de ce champs qui est clé primaire???

(la je pense faire un "SELECT * FROM ".$table." WHERE PRIMARY="."$TabVar[1]" )

ce qui compte ca n'est pas de participer, mais d'aider, x-fan, tu devrais aller te reposer un peu...;)
0
MDR X-Fan !! Vas te coucher ... tu m'as l'air fatigué !!
C'est pas parceque tu n'en vois pas l'utilité que ça ne sert à rien et que tu peux te payer la tête des honnêtes CommentCaMarchiens ... c'est juste que tu manques d'expérience ...
0