InterBase - статьи


Ограничения


При создании базы данных на таблицы могут быть наложены различные ограничения, это и ограничения ссылочной целостности и всевозможные проверки вводимых значений и, к примеру, ограничения NOT NULL.

Перечень ограничений можно получить из таблицы RDB$RELATION_CONSTRAINTS. Приведенный пример запроса возвращает наименование ограничения, его тип, наименование таблицы, на которую данное ограничение распространяется и индекс, если ограничение базируется на индексе.

SELECT RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME, RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME FROM RDB$RELATION_CONSTRAINTS ORDER BY RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME;

Следующий запрос возвращает CHECK ограничения.

SELECT RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME FROM RDB$RELATION_CONSTRAINTS WHERE ((RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE = 'CHECK'));

Ограничения, типа CHECK, построены на основе триггеров. Следующий запрос позволяет получить наименования данных триггеров. Имя триггера находится в поле RDB$CHECK_CONSTRAINTS.RDB$TRIGGER_NAME.

SELECT RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME, RDB$CHECK_CONSTRAINTS.RDB$TRIGGER_NAME FROM RDB$RELATION_CONSTRAINTS INNER JOIN RDB$CHECK_CONSTRAINTS ON (RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME = RDB$CHECK_CONSTRAINTS.RDB$CONSTRAINT_NAME) WHERE ((RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE = 'CHECK'));

Запрос, аналогичный предыдущему, позволяет выбрать NOT NULL ограничения, а также имена полей таблиц (RDB$CHECK_CONSTRAINTS.RDB$TRIGGER_NAME), на которые они распространены.

SELECT RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME, RDB$CHECK_CONSTRAINTS.RDB$TRIGGER_NAME FROM RDB$RELATION_CONSTRAINTS INNER JOIN RDB$CHECK_CONSTRAINTS ON (RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME = RDB$CHECK_CONSTRAINTS.RDB$CONSTRAINT_NAME) WHERE ((RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE = 'NOT NULL')) ORDER BY RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME;




- Начало -  - Назад -  - Вперед -