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

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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам