MySQL-DBI:如何判断第一列是否是自动递增列?

MySQL-DBI:如何判断第一列是否是自动递增列?,mysql,perl,auto-increment,dbi,dbd-mysql,Mysql,Perl,Auto Increment,Dbi,Dbd Mysql,使用此信息是否可以可靠地判断表的第一列是否为自动递增列 有关资料如下: database handle ($dbh) database name table name 您可以使用列EXTRA进行查询 您可以假设自动递增的列是整型数据类型,不可为null,并且没有默认值 my $sql = q{SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND OR

使用此信息是否可以可靠地判断表的第一列是否为自动递增列

有关资料如下:

database handle ($dbh)
database name
table name
您可以使用列
EXTRA
进行查询

您可以假设自动递增的列是整型数据类型,不可为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目录函数的链接()-这些函数允许以独立于数据库的方式执行相同操作)@Corion:right。。。我更新了我的答案,提到了这一点,尽管我不确定DBI(和/或DBD::mysql)是否允许访问INFORMATION_SCHEMA中的所有相关列。COLUMNS@Corion:您知道这是如何实现的(了解列是否为自动增量列)DBI catalog函数是否可以?@sid_com据我所知,没有方便的方法获取列的
自动增量
状态。检查
extra
字段是否为
如“%auto_increment%”
是我所知的唯一方法。