Sql...connaitre la cle primaire dune table [Résolu/Fermé]

Signaler
Messages postés
51
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
17 décembre 2008
-
 Myste -
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

7 réponses

Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
90
Bonjour.

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

Ca te renvoie les informations sur MaTable...
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
805
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
6 janvier 2010
19
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


Messages postés
51
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
17 décembre 2008
3
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.
Merci, 'desc' ça me convient aussi.
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;
/////////////////////////////////////////////////////////////
Messages postés
805
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
6 janvier 2010
19
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
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
252
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.
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 ? :)
Messages postés
805
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
6 janvier 2010
19
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.
Messages postés
51
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
17 décembre 2008
3
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...;)
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 ...