Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Operation violates CHECK constraint INTEG_3 on view or table TOVARY




 

INSERT INTO TOVARY (KOD_TOVAR,TOVAR,ED_IZM,ZENA,COUNT_TOV)

VALUES (6,'Масло подсолнечное','л',10,1977);

SELECT * FROM TOVARY;

 

KOD_TOVAR TOVAR ED_IZM ZENA COUNT_TOV

=========== ==================== ========== =========== ===========

1 Сахар кг 12 1442

2 Макароны кг 5 86

3 Огурцы весовые кг 6 250

4 Огурцы баночные банки 10 475

5 Крупа манная кг 8 1010

6 Масло подсолнечное л 10 1977

 

SELECT * FROM RASXOD;

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (2,'12.04.98',10,120,1,6);

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (5,'12.07.00',12,120,4,5);

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (6,'13.09.00',5,25,2,2);

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (11,'12.04.03',10,50,2,6);

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (7,'15.09.00',1,10,6,6);

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (8,'16.07.00',7,70,6,1);

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (9,'23.05.00',11,110,400,1);

Statement failed, SQLCODE = -530

violation of FOREIGN KEY constraint "TOV_RASH" on table "RASXOD"

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (9,'23.05.00',11,110,4,100);

Statement failed, SQLCODE = -530

violation of FOREIGN KEY constraint "POK_RASH" on table "RASXOD"

INSERT INTO RASXOD (KOD_RASH,DATA_RASH,KOLVO,STOIM,KOD_TOVAR,KOD_POKUP)

VALUES (9,'23.05.00',11,110,4,1);

 

SELECT * FROM RASXOD;

KOD_RASH DATA_RASH KOLVO STOIM KOD_TOVAR KOD_POKUP

=========== =========== =========== =========== =========== ===========

2 12-APR-1998 10 120 1 6

5 12-JUL-2000 12 120 4 5

6 13-SEP-2000 5 25 2 2

11 12-APR-2003 10 50 2 6

7 15-SEP-2000 1 10 6 6

8 16-JUL-2000 7 70 6 1

9 23-MAY-2000 11 110 4 1

 

SELECT * FROM TOVARY;

KOD_TOVAR TOVAR ED_IZM ZENA COUNT_TOV

=========== ==================== ========== =========== ===========

1 Сахар кг 12 1432

2 Макароны кг 5 71

3 Огурцы весовые кг 6 250

4 Огурцы баночные банки 10 452

5 Крупа манная кг 8 1010

6 Масло подсолнечное л 10 1969

 

EXIT;

Отметим, что в процессе работы этой программы SQL-сервер проверял описанные ограничения целостности БД и прерывал выполнение операторов, которые нарушали эти ограничения:

¨ Первое сообщение об ошибке (Statement failed...) связано с попыткой вставить в таблицу TOVARY строку с ключом (KOD_TOVAR=2), который уже был использован во второй строке.

¨ Второе сообщение связано с попыткой вставить в таблицу TOVARY строку со значением поля ZENA=-10, для которого объявлен предикат CHECK(ZENA>=0).

¨ Следующие два сообщения связаны с попытками нарушить требование межтабличной целостности – вставить в таблицу RASXOD строки с кодом товара (KOD_TOVAR=400) и кодом покупателя (KOD_POKUP=100), которые не встречаются в таблицах TOVARY и POKUPATELI, соответственно.

Отметим, что после загрузки данных в таблицу RASXOD содержимое таблицы TOVARY тоже изменилось (значение поля COUNT_TOV в некоторых записях) – это отрабатывал триггер AI_RASXOD1.

Остальные триггеры не отрабатывали, поскольку не происходили события их запускающие.

Не выполнялись также и хранимые процедуры[8], связанные с генераторами. В отличие от триггеров, хранимые процедуры вызываются явно оператором процедуры, а таковых в нашей программе не было. Кстати, именно в связи с этим выше рекомендована инициализация генераторов значением 100 (например, SET GENERATOR TOVARY_KOD TO 100;), так зарезервировано некое число кодов для заполнения записей с использованием консоли в обход типового случая.

Теперь определим представление (View) для пользователей, которых интересуют покупки только не Казанских покупателей. Для этого опять подготовим SQL-программу..\VCREATE.SQL и выполним ее. Протокол работы этой программы:

SET NAMES WIN1251;

CONNECT 'SKLAD\Ib_sklad.gdb'

USER 'SYSDBA' PASSWORD 'masterkey';

DROP VIEW RasxodDoc;

DROP VIEW RasxodNoKz;

CREATE VIEW RasxodDoc

(KOD_RASH,DATA_RASH,KOLVO,STOIM,

KOLVO_ZENA,

POKUP,GOROD,ADRES,TEL,

TOVAR,ED_IZM,ZENA,COUNT_TOV)

AS SELECT

RASXOD.KOD_RASH,RASXOD.DATA_RASH,RASXOD.KOLVO,RASXOD.STOIM,

RASXOD.KOLVO*TOVARY.ZENA,

POKUPATELI.POKUP,POKUPATELI.GOROD,POKUPATELI.ADRES,POKUPATELI.TEL,

TOVARY.TOVAR,TOVARY.ED_IZM,TOVARY.ZENA,TOVARY.COUNT_TOV

FROM RASXOD,POKUPATELI,TOVARY

WHERE ((RASXOD.KOD_POKUP=POKUPATELI.KOD_POKUP)AND

(RASXOD.KOD_TOVAR=TOVARY.KOD_TOVAR)AND

(POKUPATELI.GOROD<>'Казань'));

 

SELECT * FROM RasxodDoc ORDER BY KOD_RASH;

См. результат RDOC.DOC

 

INSERT INTO RasxodDoc (KOD_RASH,DATA_RASH,KOLVO,STOIM)

VALUES (20,'23.05.02',110,1100);

Statement failed, SQLCODE = -150

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...