首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MySQL中获取特定表的主键“列名”

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

Stack Overflow用户
提问于 2018-09-12 13:46:49
回答 3查看 4.7K关注 0票数 9

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

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

问题是我们是用php逐个编程的。

代码语言:javascript
复制
if($tableName == 'Clients'){ $idname = 'CID'; }

有没有办法直接问MySQL:给我一个特定表的主键列名称,类似于:

代码语言:javascript
复制
SHOW COLUMN_NAME FROM CLEINTS WHERE KEY_NAME = 'PRIMARY KEY';

我记得我以前用过这样的查询,但我不记得是什么了,我已经找到了一些SQL的解决方案,但似乎不能在MySQL中工作,或者太复杂了(使用information_schema),我正在寻找的查询非常简单,几乎就像我刚才给出的例子。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-12 14:10:52

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

代码语言:javascript
复制
SELECT COLUMN_NAME 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE TABLE_NAME = 'Your_table_name' 
  AND CONSTRAINT_NAME = 'PRIMARY'
票数 6
EN

Stack Overflow用户

发布于 2018-09-12 14:02:06

您可以使用以下命令获取KEYS

代码语言:javascript
复制
SHOW KEYS FROM CLEINTS WHERE Key_name = 'PRIMARY'

正如@nick在评论中提到的那样,使用SHOW获得INDEXES的另一种选择

代码语言:javascript
复制
SHOW INDEXES FROM CLEINTS WHERE Key_name = 'PRIMARY'

语法:

代码语言:javascript
复制
SHOW [EXTENDED] {INDEX | INDEXES | KEYS}
    {FROM | IN} tbl_name
    [{FROM | IN} db_name]
    [WHERE expr]

documentation link获取更多详细信息。

票数 2
EN

Stack Overflow用户

发布于 2018-09-12 14:00:10

Hello @multimediaxp我想这可能会对你有帮助。

代码语言:javascript
复制
SELECT `COLUMN_NAME`
FROM `information_schema`.`COLUMNS`
WHERE (`TABLE_SCHEMA` = 'yourDBName')
  AND (`TABLE_NAME` = 'Clients')
  AND (`COLUMN_KEY` = 'PRI');

有关更多详细信息,请参阅给定的链接:http://mysql-0v34c10ck.blogspot.com/2011/05/better-way-to-get-primary-key-columns.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52288219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档