Скачиваний:
38
Добавлен:
28.06.2014
Размер:
50.69 Кб
Скачать

Лабораторная работа №7

Студенты:

Михайлова В.А.

Панков Д.Е.

Группа : А-13-07

Вариант 3.

Преподаватель: Сидорова Н.П

Создание контрольных ограничений на уровне поля

create table poss1

(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 'M' 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'))

Пример добавления корректных данных

insert poss1 values

(265579,'ТРОЙНОВ СТЕПАН ГРИГОРЬЕВИЧ ','24','02','70','M',

'0','001702','05',0419569,'09','89','03','93')

go

Примеры добавления некорректных данных

insert poss1 values

(800000,'ТРОЙНОВ СТЕПАН ГРИГОРЬЕВИЧ ','24','02','70','M',

'0','001702','05',0419569,'09','89','03','93')

go

Msg 547, Level 16, State 0, Line 1

The INSERT statement conflicted with the CHECK constraint "CK__poss1__nomer__1B0907CE". The conflict occurred in database "MikhailovaVA", table "dbo.poss1", column 'nomer'.

The statement has been terminated.

insert poss1 values

(265579,'ТРОЙНОВ СТЕПАН ГРИГОРЬЕВИЧ ','24','13','70','M',

'0','001702','05',0419569,'09','89','03','93')

go

Msg 547, Level 16, State 0, Line 1

The INSERT statement conflicted with the CHECK constraint "CK__poss1__m_rogd__1DE57479". The conflict occurred in database "MikhailovaVA", table "dbo.poss1", column 'm_rogd'.

The statement has been terminated.

Пример корректного изменения данных

update poss1

set d_rogd='26'

go

Пример некорректного изменения данных

update poss1

set d_rogd='40'

go

Msg 547, Level 16, State 0, Line 1

The UPDATE statement conflicted with the CHECK constraint "CK__poss1__d_rogd__1CF15040". The conflict occurred in database "MikhailovaVA", table "dbo.poss1", column 'd_rogd'.

The statement has been terminated.

Создание контрольных ограничений на уровне таблицы

А) значение поля «Год рождения» меньше значения поля «Год приема», которое, в свою очередь, меньше значения поля «Год окончания»;

Б) если значение поля «Код категории обучения» равно ‘07’, ‘08’ или ‘09’ (аспирант, аспирант-заочник или ординатура), то первые два символа в значении поля «Специальность» больше ‘00’; в остальных случаях (по всем другим значениям поля «Код категории обучения») первые два символа значения поля «Специальность» равны ‘00’;

В) если значение поля «Пол» равно «Ж», то фамилия в поле «Фамилия Имя Отчество» должна заканчиваться на букву «А», иначе, если значение поля «Пол» равно «М», то фамилия в поле «Фамилия Имя Отчество» не должна заканчиваться на букву «А»;

alter table poss1

add constraint A check

((convert(integer,g_rogd)<convert(integer,gp))and

(convert(integer,gp)<convert(integer,gok)))

alter table poss1

add constraint B 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%'))

alter table poss1

add constraint C check

(((pol='Ж') and (fio like '% % %а %'))

or ((pol='M')and(not(fio like '% % %а %'))))

Пример добавления корректных данных

insert poss1 values

(334421,'БАБАЕВА САБИНА ВАЛЕРЬЯНОВНА ','01','04','71','Æ',

'0','001702','05',0419569,'09','89','03','93')

Go

Пример добавления некорректных данных

insert poss1 values

(334421,'БАБАЕВА САБИНА ВАЛЕРЬЯНОВН ','01','04','71','Æ',

'0','001702','05',0419569,'09','89','03','93')

Go

Msg 547, Level 16, State 0, Line 1

The INSERT statement conflicted with the CHECK constraint "C". The conflict occurred in database "MikhailovaVA", table "dbo.poss1".

The statement has been terminated.

insert poss1 values

(334421,'БАБАЕВА САБИНА ВАЛЕРЬЯНОВНА ','01','04','71','Æ',

'0','001702','07',0419569,'09','89','03','93')

Go

Msg 547, Level 16, State 0, Line 1

The INSERT statement conflicted with the CHECK constraint "B". The conflict occurred in database "MikhailovaVA", table "dbo.poss1".

The statement has been terminated.

insert poss1 values

(334421,'БАБАЕВА САБИНА ВАЛЕРЬЯНОВНА ','01','04','71','Æ',

'0','001702','05',0419569,'09','93','03','89')

Go

Msg 547, Level 16, State 0, Line 1

The INSERT statement conflicted with the CHECK constraint "A". The conflict occurred in database "MikhailovaVA", table "dbo.poss1".

The statement has been terminated.

Создание правила

ФИО не должно содержать цифры

create rule rule1 as

not ((@fio like '%0%')or(@fio like '%1%')or(@fio like '%2%')or(@fio like '%3%')or(@fio like '%4%')or(@fio like '%5%')or(@fio like '%6%')or(@fio like '%7%')or(@fio like '%8%')or(@fio like '%9%'))

sp_bindrule 'rule1', 'poss1.[fio]'

Пример добавления некорректных данных

insert poss1 values

(334421,'БАБАЕВА С0БИНА ВАЛЕРЬЯНОВНА ','01','04','71','Æ',

'0','001702','05',0419569,'09','93','03','89')

Go

Msg 513, Level 16, State 0, Line 1

A column insert or update conflicts with a rule imposed by a previous CREATE RULE statement. The statement was terminated. The conflict occurred in database 'MikhailovaVA', table 'dbo.poss1', column 'fio'.

The statement has been terminated.

Соседние файлы в папке Михайлова, Панков