mysql:以编程方式获取表的主键

时间:2013-08-22 01:07:00

标签: mysql

如何以编程方式获取某些表的主键?我知道我可以运行一些查询,如“show create table”或“show keys”,但之后我将不得不解析主键的结果。想知道是否有一个简单的方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

mysql> SHOW COLUMNS FROM foo WHERE `Key` = 'PRI';
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | NO   | PRI | NULL    |       |
+-------+---------+------+-----+---------+-------+

现在只需阅读Field列中主键列的名称。

这个奇怪的方面是Key必须在后面。尽管在MySQL中通常列名称不区分大小写,但除非在这种情况下划分Key,否则它不起作用。

答案 1 :(得分:1)

只要您使用“物理”表(即不是视图),就应该能够为表的主键的组成列获取单个字符串表示形式{{1} },来自information_schema数据库:

foo.bar

两个警告:

  1. 这可能不适用于除主要
  2. 之外的其他键
  3. 如果您的列名称或键很长,引用了很多列,则可能会遇到GROUP_CONCAT上限:

    mysql> SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`')) AS `PRIMARY KEY`
        -> FROM information_schema.KEY_COLUMN_USAGE
        -> WHERE CONSTRAINT_NAME = 'PRIMARY'
        ->   AND TABLE_SCHEMA = 'foo'
        ->   AND TABLE_NAME = 'bar'
        -> ORDER BY ORDINAL_POSITION;
    +--------------+
    | PRIMARY KEY  |
    +--------------+
    | `baz`,`zoid` |
    +--------------+
    1 row in set (0.00 sec)
    
  4. 如果需要,您可以通过常规set statement

    为会话更新此内容