我们的系统为每个用新内容更新或插入的表创建一个日志,保存表名,更新行的ID值或最后插入的ID以及事件的时间戳。
这很有用,因为我们可以检查最新的表是什么,并在发生更改后立即刷新显示给用户的信息,但是我们没有在日志中保存ID的列名。 / p>
问题是我们正在用php逐案编程。
if($tableName == 'Clients'){ $idname = 'CID'; }
有没有办法问MySQL:给我一个特定表的主键列名称,就像这样:
SHOW COLUMN_NAME FROM CLEINTS WHERE KEY_NAME = 'PRIMARY KEY';
我记得我过去曾经使用过这样的查询,但是我不记得它是什么,我已经找到了一些SQL解决方案,但似乎无法在MySQL中工作或过于复杂(使用{ {1}}),我要查找的查询非常简单,几乎就像我刚才给出的示例一样。
谢谢
答案 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了解更多详情。