Откройте для себя первичные / уникальные ключи в Sybase ASE - PullRequest
1 голос
/ 04 сентября 2011

В Sybase ASE я хотел бы обнаружить все первичные и уникальные ключи. Я хочу сделать что-то похожее на то, что объясняется в этом ответе:

Идентификация таблиц Sybase, полей, ключей, ограничений

Но, к сожалению, это не работает для меня. Каким-то образом таблица syskeys возвращает любые строки для моих собственных ключей, только для ключей системной таблицы.

Что я могу делать не так? Некоторые недостающие гранты? Я установил Sybase ASE 15.5 и подключаюсь с пользователем dbo, логин sa

1 Ответ

3 голосов
/ 04 сентября 2011

Когда вы явно объявляете ключевое поле - скажем, в операторе CREATE TABLE - это не заполняет таблицу syskeys. Вы должны использовать (например) sp_primarykeys, чтобы сделать это. Это позволяет вам «зарегистрировать» в таблицах syskeys первичные, внешние ключи и т. Д., Которые вы хотели бы обнаружить приложением. Вы можете объявить первичный ключ таким способом, даже если для рассматриваемого поля не введено фактическое ограничение.

Хранимая процедура sp_helpconstraint может использоваться для поиска всех ключей (и т. Д.), Определенных для таблицы.

Чтобы запросить все таблицы в базе данных, вам нужно использовать sysindexes таблицу и посмотреть, например, поле status.

...