Rechercher : dans
Par :

Sql...connaitre la cle primaire dune table

Dernière réponse le 4 fév 2009 à 07:55:11 ixce, le 4 jun 2008 à 17:57:58 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

1

X-Fan, le 4 jun 2008 à 18:02:24

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. "Can't we learn from history, why's it such a mystery?"

Répondre à X-Fan

3

ixce, le 4 jun 2008 à 18:19: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...;)

Répondre à ixce

7

alphanono, le 19 sep 2008 à 15:29:18

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 ...

Répondre à alphanono

2

macgawel, le 4 jun 2008 à 18:15:27
  • +2

Bonjour.

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

Ca te renvoie les informations sur MaTable...

Répondre à macgawel

4

X-Fan, le 4 jun 2008 à 18:32:38

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 "Can't we learn from history, why's it such a mystery?"

Répondre à X-Fan

9

Xil, le 19 sep 2008 à 16:12:18

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.

Répondre à Xil

5

X-Fan, le 4 jun 2008 à 18:38:17
  • +1

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


"Can't we learn from history, why's it such a mystery?"

Répondre à X-Fan

6

ixce, le 5 jun 2008 à 15:49:56

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.

Répondre à ixce

8

alphanono, le 19 sep 2008 à 15:34:55

Merci, 'desc' ça me convient aussi.

Répondre à alphanono

10

Myste, le 4 fév 2009 à 07:32:32

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 ? :)

Répondre à Myste

11

 Myste, le 4 fév 2009 à 07:55:11
  • +3

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;
/////////////////////////////////////////////////////////////

Répondre à Myste
Collection CommentÇaMarche.net