对于如下表格:
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所需的最后一件事。
答案 0 :(得分:1)
SyBooks Online请注明状态列。这是ASE,但它可能是相同的。
答案 1 :(得分:0)
似乎我可以使用SYSTABCOL中的“默认”列:
select tc.[default]
from systabcol tc
join systab t on t.table_id = tc.table_id
where t.table_name = 'foo'
当“默认”列设置为“自动增量”时,它就是一个IDENTITY列。