Цель:
Знакомство с использованием контрольных ограничений и правил для поддержки целостности данных в БД



create table poss7
(nomer integer check (nomer between 1 and 700000),
fio char (40) not null check (fio not like '%.%' or fio not like '%-%'),
d_rogd char(2) check (d_rogd between '01' and '31'),
m_rogd char(2) check (m_rogd between '01' and '12'),
g_rogd char(2) check (g_rogd between '00' and '99'),
pol char(1) check (pol like 'М' or pol like 'Ж'),
sem_polog_k char(1) check (sem_polog_k in ('0', '1', '2', '3')),
spec char(6) check (spec between '000000' and '190046'),
kat_obuch_k char(2) check (kat_obuch_k between '01' and '17'),
vuz_k integer check (vuz_k between 128955 and 8199999),
mp char(2) check (mp between '01' and '12'),
gp char(2) check (gp between '00' and '99'),
mo char(2) check (mo between '01' and '12'),
gok char(2) check (gok between '00' and '99'),
constraint kat_ch check
((kat_obuch_k in ('07', '08', '09') and not (spec like ('00%')) or
not (kat_obuch_k in ('07', '08', '09') and spec like ('00%')))),

constraint gp_ch check
((convert (integer,gok) - convert (integer, gp) > 0 ) and
(convert (integer, gp) - convert (integer, g_rogd) > 0 )),

constraint pol_ch check
((pol='Ж' and fio like '%А % %') or
(pol='М' and fio not like '%А % %')))

------------------------------------------------------------------

insert poss7 values
(699991, 'ЖУРАВЛЕВ АНДРЕЙ АНДРЕЕВИЧ', '01','02','20', 'М', '0', '001991', '05', 0129999, '08', '44', '03', '49')


---------------------------
create rule rule1 as @kat_obuch in ('01', '02', '03', '04', '05', '07', '08', '10', '11', '17')
sp_bindrule 'rule1', 'poss1.[kat_obuch_k]'





Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.