MySQL - DBI:如何判断第一列是否为自增列?
MySQL - DBI: How to tell if the first column is an auto increment column?
是否可以根据此信息可靠地判断 table 的第一列是否为自动递增列?
可用信息如下:
database handle ($dbh)
database name
table name
您可以查询 table COLUMNS
in the mysql information schema,使用列 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 );
也可能使用the DBI catalog functions以独立于数据库的方式实现相同的操作。
是否可以根据此信息可靠地判断 table 的第一列是否为自动递增列?
可用信息如下:
database handle ($dbh)
database name
table name
您可以查询 table COLUMNS
in the mysql information schema,使用列 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 );
也可能使用the DBI catalog functions以独立于数据库的方式实现相同的操作。