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

时间:2019-01-05 12:14:38

标签: mysql perl auto-increment dbi dbd-mysql

是否可以使用此信息可靠地确定表的第一列是否为自动增量列?

可用信息如下:

database handle ($dbh)
database name
table name

1 个答案:

答案 0 :(得分:2)

您可以使用列EXTRA查询table COLUMNS in the mysql information schema

您将假定自动递增的列是整数数据类型,不可为空且没有默认值。

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 );

也有可能使用the DBI catalog functions以与数据库无关的方式实现相同的操作。