一尘不染

MySQL:动态确定表的主键

mysql

我正在用PHP生成这样的SQL查询:

$sql = sprintf("UPDATE %s SET %s = %s WHERE %s = %s", ...);

由于此查询的几乎每个部分都是动态的,因此我需要一种动态确定表的主键的方法,这样我就可以进行如下查询:

$sql = sprintf("UPDATE %s SET %s=%s WHERE PRIMARY_KEY = %s", ...);

表的主键是否有MySQL关键字,或者有获取该关键字的方法?

我以前使用过information_schema数据库来查找这样的信息,但是如果我不必求助于此,那将是很好的。


阅读 269

收藏
2020-05-17

共1个答案

一尘不染

SHOW INDEX FROM <tablename>

您想要其中Key_name = PRIMARY的行

http://dev.mysql.com/doc/refman/5.0/en/show-
index.html

您可能需要缓存结果-在您可能需要使用的所有表上运行SHOW语句需要花费一些时间。

2020-05-17