2012-06-02 23 views

回答

0

我不知道關於mysql,但SQLColumns的一些驅動程序返回其他字段,可以告訴你一個列是否是一個標識列。例如,

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 

以上是其a)支持SS_IS_IDENTITY和b)示出了對於類型名稱 'INT標識' 的斯軟件MS SQL Server ODBC驅動。