反思IDENTITY列

时间:2010-02-14 23:29:39

标签: sqlanywhere

对于如下表格:

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所需的最后一件事。

2 个答案:

答案 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列。