Как получить первичный ключ таблицы?

Существует ли способ получить название поля первичного ключа от mysql-базы-данных? Например:

У меня есть таблица как это:

+----+------+
| id | name |
+----+------+
| 1  | Foo1 |
| 2  | Foo2 |
| 3  | Foo3 |
+----+------+

Где полевой идентификатор является первичным ключом (он имеет автоматический инкремент, но я не могу использовать это). Как я могу получить полевой "идентификатор" имени в php?

67
задан Rubens Mariuzzo 25 June 2018 в 21:41
поделиться

4 ответа

Лучше использовать SHOW KEYS , поскольку у вас не всегда есть доступ к information_schema. Следующие работы:

SHOW KEYS FROM table WHERE Key_name = 'PRIMARY'

Column_name будет содержать имя первичного ключа.

113
ответ дан 24 November 2019 в 14:28
поделиться

Вот имя столбца первичного ключа

SELECT k.column_name
FROM information_schema.table_constraints t
JOIN information_schema.key_column_usage k
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
  AND t.table_schema='YourDatabase'
  AND t.table_name='YourTable';
31
ответ дан 24 November 2019 в 14:28
поделиться
SELECT key_column_usage.column_name
FROM   information_schema.key_column_usage
WHERE  table_schema = schema()             -- only look in the current db
AND    constraint_name = 'PRIMARY'         -- always 'PRIMARY' for PRIMARY KEY constraints
AND    table_name = '<your-table-name>'    -- specify your table.
16
ответ дан 24 November 2019 в 14:28
поделиться

Для подхода PHP вы можете использовать mysql_field_flags

$q = mysql_query('select * from table limit 1');

for($i = 0; $i < mysql_num_fields(); $i++)
    if(strpos(mysql_field_tags($q, $i), 'primary_key') !== false)
        echo mysql_field_name($q, $i)." is a primary key\n";
2
ответ дан 24 November 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: