mysql-dbi:如何判断第一列是否是自动增量列?

pgccezyw  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(404)

有了这些信息,是否可以可靠地判断表的第一列是否为自动递增列?
可用信息如下:

database handle ($dbh)
database name
table name
vwoqyblh

vwoqyblh1#

您可以查询表 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 catalog函数以独立于数据库的方式实现相同的操作。

相关问题