2010-02-14 35 views
2

对于例如桌子:内省IDENTITY列

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列,但然后我失去了一个标识值,我仍然不知道它是哪一列。

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

回答

1

SyBooks Online注意状态栏。这是ASE,但它可能是相同的。

0

看来我可以在SYSTABCOL使用“默认”列:

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

当“默认”列设置为“自动增量”,那么它的IDENTITY列。