![](/img/trans.png)
[英]How can I get the auto incrementing field name or the primary key fieldname from a mysql table?
[英]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.