2

次のようなテーブルの場合:

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_identity0ない列に対しても、0まだ使用されていない ID に対してもです。NULLそれが非アイデンティティ用だったらよかったのに。

この関数を使用してGET_IDENTITY、テーブルにIDENTITY列があるかどうかを確認できますが、ID 値が失われ、それがどの列であるかはまだわかりません。

これは、 0.05002 の DBIx::Class::Schema::Loader での基本的な SQL Anywhere サポートに必要な最後のものです。

4

2 に答える 2

1

SyBooksOnlineはステータス列に注意してください。これはASEですが、同じである可能性があります。

于 2010-02-14T23:56:18.147 に答える
0

SYSTABCOL の「デフォルト」列を使用できるようです。

select tc.[default]
from systabcol tc
join systab t on t.table_id = tc.table_id
where t.table_name = 'foo'

「デフォルト」列が「自動インクリメント」に設定されている場合、それは IDENTITY 列です。

于 2010-02-15T07:39:16.950 に答える