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'

不幸max_identity的是,0即使对于不是身份的列,也0适用于尚未使用的身份。如果是NULL为了非身份,那就太好了。

我可以使用该GET_IDENTITY函数来检查一个表是否有一个IDENTITY列,但是我丢失了一个标识值,我仍然不知道它是哪一列。

非常感谢任何帮助,这是我在 0.05002 中的 DBIx::Class::Schema::Loader 中支持基本 SQL Anywhere 所需的最后一件事。

4

2 回答 2

1

SyBooks Online注意状态栏。这是 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 回答