MySQL: Déterminer le Tableau de la Clé Primaire de façon dynamique
Je suis, génération d'une requête SQL comme ceci en PHP:
$sql = sprintf("UPDATE %s SET %s = %s WHERE %s = %s", ...);
Puisque presque chaque partie de cette requête est dynamique, j'ai besoin d'un moyen de déterminer la table de la clé primaire de manière dynamique, de sorte que j'aurais une requête comme ceci:
$sql = sprintf("UPDATE %s SET %s=%s WHERE PRIMARY_KEY = %s", ...);
Est-il une base de données MySQL-clé pour la clé primaire d'une table, ou une façon de l'obtenir?
J'ai utilisé le information_schema DB avant de trouver des informations de ce type, mais ce serait bien si je n'ai pas eu à recourir à ce.
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez que la ligne où Key_name = PRIMAIRE
http://dev.mysql.com/doc/refman/5.0/en/show-index.html
Vous aurez probablement envie de mettre en cache les résultats -- il faut du temps pour exécuter MONTRER déclarations sur toutes les tables que vous pourriez avoir besoin de travailler avec.
Il peut-être pas conseillé, mais fonctionne très bien:
Le solide est d'utiliser information_schema:
Comme présenté sur la mysql-liste. Cependant, quelques temps plus lent de la première solution.
Une meilleure façon d'obtenir des colonnes de Clé Primaire:
De http://mysql-0v34c10ck.blogspot.com/2011/05/better-way-to-get-primary-key-columns.html
Aussi
Est équivalent à
Basé sur @jake-sully et @lukmdo réponses, de faire une fusion de leur code, j'ai fini avec le fragment de code suivant:
Espère qu'elle pourra aider quelqu'un