次のようなテーブルの場合:
create table foo (id int identity primary key)
idシステム テーブルにクエリを実行して、それが実際にIDENTITY列であるかどうかを判断したいと思います。
私が見つけた最も近いものは次のとおりです。
select tc.max_identity from systabcol tc
join systab t on t.table_id = tc.table_id
where t.table_name = 'foo'
残念ながら、ID でmax_identityは0ない列に対しても、0まだ使用されていない ID に対してもです。NULLそれが非アイデンティティ用だったらよかったのに。
この関数を使用してGET_IDENTITY、テーブルにIDENTITY列があるかどうかを確認できますが、ID 値が失われ、それがどの列であるかはまだわかりません。
これは、 0.05002 の DBIx::Class::Schema::Loader での基本的な SQL Anywhere サポートに必要な最後のものです。