Как получить первичный ключ и уникальные столбцы ограничений в Derby - PullRequest
2 голосов
/ 28 февраля 2010

Как это сделать? Системная таблица SYSCOLUMNS имеет только столбцы для таблиц. SYSCHECKS имеет объект REFERENCEDCOLUMNS. Есть ли способ получить это.

Мне известно о вызове JDBC getPrimaryKeys, но он не получает уникальные столбцы ограничений.

1 Ответ

3 голосов
/ 28 февраля 2010

Дерби - ограничения

Потребовалось немного покопаться, чтобы найти вышеуказанный вопрос; мой вопрос является частично ответом на дополнительный вопрос к приведенному выше.

Взятие CONSTRAINTID против SYSKEYS дает CONGLOMERATEID, который при использовании против SYSCONGLOMERATES дает DESCRIPTOR. DESCRIPTOR - это POJO, который содержит int-массив в методе baseColumnPositions. Этот int-массив содержит COLUMNNUMBERS в SYSCOLUMNS столбцов в ограничении.

При запросе в прямом SQL, получение поля DESCRIPTOR приводит к строке со списком CSV-чисел, которые необходимо проанализировать. К счастью для меня, я работаю в Clojure, поэтому вызов метода baseColumnPositions и использование получающегося массива int тривиальны.

...