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

qjp7pelc  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(375)

我们的系统为每个更新或插入新内容的表创建一个日志,它保存表名、更新行的id值或最后插入的id以及事件的时间戳。
这很有用,因为我们可以检查最新更新的表是什么,并在发生更改时刷新显示给用户的信息,但是我们没有在日志中保存id的列名。
问题是我们正在用php逐个编程。

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

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

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

我记得我以前使用过这样的查询,但我不记得它是什么,我找到了一些sql的解决方案,但在mysql中似乎不起作用,或者太复杂了(使用 information_schema ),我要查找的查询非常简单,几乎像我刚才给出的示例。
谢谢

fae0ux8s

fae0ux8s1#

你可以得到 KEYS 通过使用

SHOW KEYS FROM CLEINTS WHERE Key_name = 'PRIMARY'

另一个选择是表演 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]

文档链接以获取更多详细信息。

t40tm48m

t40tm48m2#

您好@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

3gtaxfhh

3gtaxfhh3#

你可以从 information_schema 数据库。使用以下查询:

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

相关问题