MySQL - DBI: как определить, является ли первый столбец столбцом с автоинкрементом?
Можно ли с помощью этой информации достоверно сказать, является ли первый столбец таблицы столбцом с автоинкрементом?
Доступная информация выглядит следующим образом:
database handle ($dbh)
database name
table name
1 ответ
Решение
Вы можете запросить таблицу COLUMNS
в информационной схеме mysql, используя столбец EXTRA
,
Вы могли бы предположить, что автоинкрементный столбец имеет тип данных integer, не имеет значения null и не имеет значения по умолчанию.
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 для выполнения той же операции независимо от базы данных.