繁体   English   中英

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

[英]How to get the primary key “column name” of a specific table in MySQL

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

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

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

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

有没有办法只问MySQL:给我一个特定的表的主键列名称,如:

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

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

谢谢

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

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

你可以通过使用获得KEYS

SHOW KEYS FROM CLEINTS WHERE Key_name = 'PRIMARY'

在评论中提及的另一种替代方法是SHOW将@EXick作为INDEXES

SHOW INDEXES FROM CLEINTS WHERE Key_name = 'PRIMARY'

句法:

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

文档链接了解更多详情。

您好@multimediaxp我认为这可能会对您有所帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM