2010-02-14 3 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, но затем я теряю идентификационное значение, и я до сих пор не знаю, в каком столбце он находится.

Любая помощь очень ценится, это последнее, что мне нужно для базовой поддержки SQL Anywhere в DBIx :: Class :: Schema :: Loader в 0.05002.

ответ

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' 

, когда столбец «по умолчанию» установлен в положение «Autoincrement», то это столбец IDENTITY.

Смежные вопросы