Как я могу получить имя автоматического увеличения поля или имя поля первичного ключа из таблицы mysql?

В PHP, как мне получить имя поля поля, которое было установлено как автоматическое приращение, когда к нему добавляется новый rec?

В большинстве случаев это то же самое, что и PRIMARY_KEY таблицы, но необязательно всегда.

Таким образом, этот вопрос состоит из двух частей, второй – в 3-ю часть.

1- Как получить имя имени автоинкрементного поля …

2- Как получить имя имени поля primary_key

2.1 Как получить информацию primary_key (s), когда таблица использует больше одного поля в качестве своего первичного ключа …

    Вы можете получить информацию о таблице, используя таблицу SHOW COLUMNS FROM table . Что-то вроде этого:

     $res = $mysqli->query('SHOW COLUMNS FROM tablename'); while($row = $res->fetch_assoc()) { if ($row['Extra'] == 'auto_increment') echo 'Field with auto_increment = '.$row['Field']; if ($row['Key'] == 'PRI') echo 'Field with primary key = '.$row['Field']; } 

    если вы хотите получить столбец первичного ключа в таблице, вы можете использовать этот код:

     SELECT k.COLUMN_NAME FROM information_schema.table_constraints t LEFT JOIN information_schema.key_column_usage k USING(constraint_name,table_schema,table_name) WHERE t.constraint_type='PRIMARY KEY' AND t.table_schema=DATABASE() AND t.table_name='tbName'; -- the name of your table 

    Чтобы получить поле с автоматическим добавлением, попробуйте следующее:

     SELECT Auto_increment FROM information_schema.tables WHERE table_name = 'tbName' AND table_schema = DATABASE(); 

    Вы можете запросить базу данных information_schema :

     SELECT column_name, column_key, extra FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tablename'; 
    • column_key будет состоять из типа ключа, то есть PRI , MUL и т. Д.
    • extra столбец будет содержать auto_increment для столбца автоматического увеличения.

    Обратите внимание, что база данных information_schema является «глобальной», поэтому вы всегда должны передавать соответствующую базу данных (либо конкретно, либо через DATABASE() для текущей базы данных), либо в таблицу, иначе вы получите набор результатов BIG.

    Вы можете получить эту информацию, используя команду SHOW COLUMNS . Больше информации

    Пример. Скажите, что у вас есть таблица с именем City. Запрос на просмотр атрибутов таблицы:

     mysql> SHOW COLUMNS FROM City; ...And the result: +------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | char(35) | NO | | | | | Country | char(3) | NO | UNI | | | | District | char(20) | YES | MUL | | | | Population | int(11) | NO | | 0 | | +------------+----------+------+-----+---------+----------------+ 

    Это от http://dev.mysql.com/doc/refman/5.0/en/show-columns.html