MySQL - DBI: как определить, является ли первый столбец столбцом с автоинкрементом? - PullRequest
0 голосов
/ 05 января 2019

Можно ли с этой информацией достоверно определить, является ли первый столбец таблицы столбцом с автоинкрементом?

Доступна следующая информация:

database handle ($dbh)
database name
table name

1 Ответ

0 голосов
/ 05 января 2019

Вы можете запросить таблицу COLUMNS в информационной схеме mysql , используя столбец EXTRA.

Можно предположить, что автоинкрементный столбец имеет целочисленный тип данных, не обнуляется и не имеет значения по умолчанию.

my $sql = q{SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_SCHEMA = ?
    AND TABLE_NAME = ?
    AND ORDINAL_POSITION = 1
    AND DATA_TYPE = 'int'
    AND COLUMN_DEFAULT IS NULL
    AND IS_NULLABLE = 'NO'
    AND EXTRA like '%auto_increment%'};

my ($first_col_is_autoincrement) =         
   $dbh->selectrow_array( $sql, undef, $db_name, $table_name );

Возможно также использовать функции каталога DBI для выполнения той же операции независимо от базы данных.

...