GD REF CONSTRAINTS
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (Новая страница: «<syntaxhighlight lang="SQL"> CREATE DOMAIN d_fk_metaname AS CHAR(31) CHARACTER SET unicode_fss; CREATE TABLE gd_ref_constraints ( id dintkey, cons…») |
SYSDBA (обсуждение | вклад) |
||
| Строка 23: | Строка 23: | ||
WHERE rc.rdb$relation_name = constraint_rel AND rc.rdb$constraint_type = 'PRIMARY KEY')), | WHERE rc.rdb$relation_name = constraint_rel AND rc.rdb$constraint_type = 'PRIMARY KEY')), | ||
| − | constraint_uq_count COMPUTED BY ( | + | constraint_uq_count COMPUTED BY (( |
| − | + | SELECT | |
| − | JOIN rdb$index_segments iseg ON iseg.rdb$index_name = i.rdb$index_name | + | iif(i.rdb$statistics = 0, 0, Trunc(1/i.rdb$statistics + 0.5)) |
| − | + | FROM | |
| − | JOIN rdb$relation_constraints rc ON rc.rdb$index_name = i.rdb$index_name | + | rdb$indices i |
| − | + | JOIN rdb$index_segments iseg | |
| + | ON iseg.rdb$index_name = i.rdb$index_name | ||
| + | AND iseg.rdb$field_name = constraint_field | ||
| + | AND i.rdb$segment_count = 1 | ||
| + | JOIN rdb$relation_constraints rc | ||
| + | ON rc.rdb$index_name = i.rdb$index_name | ||
| + | AND rc.rdb$constraint_name = constraint_name | ||
| + | AND rc.rdb$constraint_type = 'FOREIGN KEY' | ||
| + | )), | ||
ref_rec_count COMPUTED BY ( | ref_rec_count COMPUTED BY ( | ||
Версия 18:11, 12 ноября 2010
CREATE DOMAIN d_fk_metaname AS CHAR(31) CHARACTER SET unicode_fss; CREATE TABLE gd_ref_constraints ( id dintkey, constraint_name d_fk_metaname UNIQUE, const_name_uq d_fk_metaname, match_option CHAR(7) CHARACTER SET NONE, update_rule CHAR(11) CHARACTER SET NONE, delete_rule CHAR(11) CHARACTER SET NONE, constraint_rel d_fk_metaname, constraint_field d_fk_metaname, ref_rel d_fk_metaname, ref_field d_fk_metaname, ref_state CHAR(8) CHARACTER SET NONE, ref_next_state CHAR(8) CHARACTER SET NONE, constraint_rec_count COMPUTED BY ( (SELECT iif(i.rdb$statistics = 0, 0, Trunc(1/i.rdb$statistics + 0.5)) FROM rdb$indices i JOIN rdb$relation_constraints rc ON rc.rdb$index_name = i.rdb$index_name WHERE rc.rdb$relation_name = constraint_rel AND rc.rdb$constraint_type = 'PRIMARY KEY')), constraint_uq_count COMPUTED BY (( SELECT iif(i.rdb$statistics = 0, 0, Trunc(1/i.rdb$statistics + 0.5)) FROM rdb$indices i JOIN rdb$index_segments iseg ON iseg.rdb$index_name = i.rdb$index_name AND iseg.rdb$field_name = constraint_field AND i.rdb$segment_count = 1 JOIN rdb$relation_constraints rc ON rc.rdb$index_name = i.rdb$index_name AND rc.rdb$constraint_name = constraint_name AND rc.rdb$constraint_type = 'FOREIGN KEY' )), ref_rec_count COMPUTED BY ( (SELECT iif(i.rdb$statistics = 0, 0, Trunc(1/i.rdb$statistics + 0.5)) FROM rdb$indices i JOIN rdb$relation_constraints rc ON rc.rdb$index_name = i.rdb$index_name WHERE rc.rdb$relation_name = ref_rel AND rc.rdb$constraint_type = 'PRIMARY KEY')), CONSTRAINT gd_pk_ref_constraint PRIMARY KEY (id), CONSTRAINT gd_chk1_ref_contraint CHECK (ref_state IN ('ORIGINAL', 'TRIGGER')), CONSTRAINT gd_chk2_ref_contraint CHECK (ref_next_state IN ('ORIGINAL', 'TRIGGER')) );