如何以编程方式获取某些表的主键?我知道我可以运行一些查询,如“show create table”或“show keys”,但之后我将不得不解析主键的结果。想知道是否有一个简单的方法来做到这一点。
答案 0 :(得分:1)
mysql> SHOW COLUMNS FROM foo WHERE `Key` = 'PRI';
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
+-------+---------+------+-----+---------+-------+
现在只需阅读Field
列中主键列的名称。
这个奇怪的方面是Key
必须在后面。尽管在MySQL中通常列名称不区分大小写,但除非在这种情况下划分Key
,否则它不起作用。
答案 1 :(得分:1)
只要您使用“物理”表(即不是视图),就应该能够为表的主键的组成列获取单个字符串表示形式{{1} },来自information_schema数据库:
foo.bar
两个警告:
如果您的列名称或键很长,引用了很多列,则可能会遇到GROUP_CONCAT上限:
mysql> SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`')) AS `PRIMARY KEY`
-> FROM information_schema.KEY_COLUMN_USAGE
-> WHERE CONSTRAINT_NAME = 'PRIMARY'
-> AND TABLE_SCHEMA = 'foo'
-> AND TABLE_NAME = 'bar'
-> ORDER BY ORDINAL_POSITION;
+--------------+
| PRIMARY KEY |
+--------------+
| `baz`,`zoid` |
+--------------+
1 row in set (0.00 sec)
如果需要,您可以通过常规set statement。
为会话更新此内容