InterBase - статьи


Ограничения - часть 3


Таблица RDB$REF_CONSTRAINTS содержит список всех вторичных ключей с поставленными в соответствие первичными ключами. Использую этот факт можно написать еще один вариант запроса, который выдаст пары master-detail.

SELECT RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME, RDB$RELATION_CONSTRAINTS1.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS1.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS1.RDB$RELATION_NAME FROM RDB$REF_CONSTRAINTS INNER JOIN RDB$RELATION_CONSTRAINTS ON (RDB$REF_CONSTRAINTS.RDB$CONSTRAINT_NAME = RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME) INNER JOIN RDB$RELATION_CONSTRAINTS RDB$RELATION_CONSTRAINTS1 ON (RDB$REF_CONSTRAINTS.RDB$CONST_NAME_UQ = RDB$RELATION_CONSTRAINTS1.RDB$CONSTRAINT_NAME) ORDER BY RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME;

А вот так можно получить пары master-detail с указанием правил поведения при обновлении и удалении в master таблице.

SELECT RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME, RDB$RELATION_CONSTRAINTS1.RDB$CONSTRAINT_NAME, RDB$RELATION_CONSTRAINTS1.RDB$CONSTRAINT_TYPE, RDB$RELATION_CONSTRAINTS1.RDB$RELATION_NAME, RDB$REF_CONSTRAINTS.RDB$UPDATE_RULE, RDB$REF_CONSTRAINTS.RDB$DELETE_RULE FROM RDB$REF_CONSTRAINTS INNER JOIN RDB$RELATION_CONSTRAINTS ON (RDB$REF_CONSTRAINTS.RDB$CONSTRAINT_NAME = RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_NAME) INNER JOIN RDB$RELATION_CONSTRAINTS RDB$RELATION_CONSTRAINTS1 ON (RDB$REF_CONSTRAINTS.RDB$CONST_NAME_UQ = RDB$RELATION_CONSTRAINTS1.RDB$CONSTRAINT_NAME) ORDER BY RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME;




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