Cum pot identifica atributele "incrementare automată" prin intermediul funcțiilor din catalogul ODBC

există o modalitate de a spune dacă coloana este o coloană incrementare automată (aka serial, aka identitate) atunci când se utilizează funcțiile catalogului ODBC (cum ar fi SQLColumns)? Sunt deosebit de interesat de MySQL ca sursă.

0

1 răspunsuri

Nu știu despre mysql, dar SQLColumns pentru unele drivere returnează câmpuri suplimentare care vă pot spune dacă o coloană este o coloană de identitate. de exemplu.,

SQL> create table mje(a int identity);

$ perl -e 'use DBI;use Data::Dumper;my $h = DBI->connect("dbi:ODBC:xx","xx","xx");my $s = $h->column_info(undef, undef, "mje", q/%/); print Dumper($s->{NAME});print $s->dump_results;'
$VAR1 = [
          'TABLE_CAT',
          'TABLE_SCHEM',
          'TABLE_NAME',
          'COLUMN_NAME',
          'DATA_TYPE',
          'TYPE_NAME',
          'COLUMN_SIZE',
          'BUFFER_LENGTH',
          'DECIMAL_DIGITS',
          'RADIX',
          'NULLABLE',
          'REMARKS',
          'COLUMN_DEF',
          'SQL_DATA_TYPE',
          'SQL_DATETIME_SUB',
          'CHAR_OCTET_LENGTH',
          'ORDINAL_POSITION',
          'IS_NULLABLE',
          'SS_IS_SPARSE',
          'SS_IS_COLUMN_SET',
          'SS_IS_COMPUTED',
          'SS_IS_IDENTITY',
          'SS_UDT_CATALOG_NAME',
          'SS_UDT_SCHEMA_NAME',
          'SS_UDT_ASSEMBLY_TYPE_NAME',
          'SS_XML_SCHEMACOLLECTION_CATALOG_NAME',
          'SS_XML_SCHEMACOLLECTION_SCHEMA_NAME',
          'SS_XML_SCHEMACOLLECTION_NAME',
          'SS_DATA_TYPE'
        ];
'master', 'dbo', 'mje', 'a', '4', 'int identity', 10, 4, '0', '10', '0', undef, undef, '4', undef, undef, 1, 'NO', '0', '0', '0', '1', undef, undef, undef, undef, undef, undef, '56'
1 rows

Cele de mai sus sunt pentru driverul Easysoft MS SQL Server ODBC care a) acceptă un SS_IS_IDENTITY și b) prezintă "identitatea int" pentru numele de tip.

0
adăugat