我们的系统为每个更新或插入了新内容的表创建了一个日志,它保存了表名、更新行的ID值或最后插入的ID以及事件的时间戳。
这很有用,因为我们可以检查最新更新的表,并在发生更改时立即刷新显示给用户的信息,但我们没有将ID的列名保存在日志中。
问题是我们是用php逐个编程的。
if($tableName == 'Clients'){ $idname = 'CID'; }
有没有办法直接问MySQL:给我一个特定表的主键列名称,类似于:
SHOW COLUMN_NAME FROM CLEINTS WHERE KEY_NAME = 'PRIMARY KEY';
我记得我以前用过这样的查询,但我不记得是什么了,我已经找到了一些SQL的解决方案,但似乎不能在MySQL中工作,或者太复杂了(使用information_schema
),我正在寻找的查询非常简单,几乎就像我刚才给出的例子。
谢谢
发布于 2018-09-12 14:10:52
您可以从information_schema
数据库中获取详细信息。使用以下查询:
SELECT COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Your_table_name'
AND CONSTRAINT_NAME = 'PRIMARY'
发布于 2018-09-12 14:02:06
您可以使用以下命令获取KEYS
SHOW KEYS FROM CLEINTS WHERE Key_name = 'PRIMARY'
正如@nick在评论中提到的那样,使用SHOW获得INDEXES
的另一种选择
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获取更多详细信息。
发布于 2018-09-12 14:00:10
Hello @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
https://stackoverflow.com/questions/52288219
复制相似问题