如何在MySQL中获取特定表的主键“列名”

时间:2018-09-12 05:46:49

标签: php mysql

我们的系统为每个用新内容更新或插入的表创建一个日志,保存表名,更新行的ID值或最后插入的ID以及事件的时间戳。

这很有用,因为我们可以检查最新的表是什么,并在发生更改后立即刷新显示给用户的信息,但是我们没有在日志中保存ID的列名。 / p>

问题是我们正在用php逐案编程。

if($tableName == 'Clients'){ $idname = 'CID'; }

有没有办法问MySQL:给我一个特定表的主键列名称,就像这样:

SHOW COLUMN_NAME FROM CLEINTS WHERE KEY_NAME = 'PRIMARY KEY';

我记得我过去曾经使用过这样的查询,但是我不记得它是什么,我已经找到了一些SQL解决方案,但似乎无法在MySQL中工作或过于复杂(使用{ {1}}),我要查找的查询非常简单,几乎就像我刚才给出的示例一样。

谢谢

2 个答案:

答案 0 :(得分:4)

您可以从information_schema数据库中获取详细信息。使用以下查询:

SELECT COLUMN_NAME 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE TABLE_NAME = 'Your_table_name' 
  AND CONSTRAINT_NAME = 'PRIMARY'

答案 1 :(得分:2)

您可以使用

获得KEYS
SHOW KEYS FROM CLEINTS WHERE Key_name = 'PRIMARY'

使用SHOW的另一种方法来获取INDEXES作为评论中提到的@nick

SHOW INDEXES FROM CLEINTS WHERE Key_name = 'PRIMARY'

语法:

SHOW [EXTENDED] {INDEX | INDEXES | KEYS}
    {FROM | IN} tbl_name
    [{FROM | IN} db_name]
    [WHERE expr]

documentation link了解更多详情。