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
Читайте также: A) Read an introductory article about the show. Check your answers for ex. 1 and 2a. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|