Реферат Проектирование базы данных для торговца подержанными автомобилями
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего
от 25%

Подписываем
договор
|
Государственное образовательное учреждение высшего профессионального образования
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЕГАЗОВЫЙ УНИВЕРСИТЕТ
Институт Нефти и Газа
Кафедра Информатики и Вычислительной Техники
КУРСОВАЯ РАБОТА
По дисциплине: «База данных»
На тему: «Спроектировать базу данных для торговца подержанными автомобилями»
Выполнил:
АСОиУзс-07-02
Макаров А.А.
Проверила:
Пономарева Н.П.
г. Тюмень
|
Введение……………………………………………………………………………...3
Описание задачи……………………………………………………………………..3
1. Проектирование базы данных……………………………………………………4
1.1 Проектирование базы методом сущность-связь………………………..4
1.1.1 Выделение сущностей и их ключей…………………………….….4
1.1.2 Определение связей и их характеристик…………………………..4
1.1.3 Построение диаграммы ER- типа…………………………………..5
1.1.4 Генерация набора предварительных отношений………………….6
1.2 Проектирование базы данных с помощью CASE – средств (ERwin)….9
1.2.1 Коротко о используемой нотации (IDEF1X)…………………….....9
1.2.2 Логическая модель с комментариями……………………………..10
1.2.3 Физическая модель с комментариями……………………………13
1.2.4 SQL скрипт…………………………………………………………14
1.3 Тестирование информационной модели с использованием CASE пакета………………………………………………………………………………..14
1.3.1 Исходный протокол…………………………………………...........14
1.3.2 Анализ……………………………………………………….............14
1.3.3 Итоговый протокол…………………………………………….......14
2. Создание базы данных в СУБД (Interbase, Oracle)…………………………….15
2.1 Краткая характеристика СУБД………………………………………...15
Заключение………………………………………………………………………….16
Список использованных источников……………………………………………...17
Приложение ……………………………………………………………………….18
|
Задание на курсовую работу по дисциплине «База данных».
Студент группы АСОиУзс-07-02 Макаров А.А.
Специальность «Автоматизированные системы обработки информации и управления»
Тема: «Спроектировать БД для торговца подержанными автомобилями»
Цель данной курсовой работы: Получить практические навыки разработки базы данных в определенной предметной области. Изучение свойств баз данных и систем управления ими. Предметом исследования является создание информационной модели при помощи CASE-пакета (Erwin)
Задачи курсовой работы:
· проектирование базы данных с использованием метода сущность-связь;
· проектирование базы данных с использованием CASE – пакета Erwin;
· тестирование информационной модели;
· создание SQL скрипта в СУБД Interbase (Oracle).
ОПИСАНИЕ ЗАДАЧИ
Спроектировать БД для торговца подержанными автомобилями. Торговец содержит штат служащих, в который входят агенты по продаже, секретари и механики. Агенты по продаже получают оклад плюс комиссионные, секретари получают оклад, механики получают почасовую оплату. Комиссионные составляют 5% для тех агентов по продаже, стаж работы которых менее трех лет, и 8% для тех, чей стаж составляет 3 и более лет. Информация об имеющихся в наличии автомобилях включает в себя дату покупки, оценочную стоимость, объем ремонтных работ, которые должны быть выполнены до выставления на продажу, приблизительную стоимость этих работ, марку, модель, год выпуска и основной цвет.
Создание программы для решения данной задачи поможет наладить продажу подержанных автомобилей .
|
1.1 Проектирование базы методом сущность-связь
1.1.1 Выделение сущностей и их ключей
Штат: №сотрудника, дата приема, ФИО, должность
Секретари: №секретаря, №сотрудника, оклад
Агенты: №агента, №сотрудника, оклад, % от продаж
Продажи: №продажи, №авто, №агента, дата продажи, цена
Механики: №механика, №сотрудника, оклад
Авто: №авто, №агента, цвет, марка, модель
Механ-авто: №ремонта, №механика, №авто, дата, кол-во часов
1.1.2 Определение связей и их характеристик
|
|
|
n 1 1 n
Связь «один-ко-многим», класс принадлежности «обязательный».
Один тип штат может иметь несколько механиков и агентов, но ни один механик и агент не может быть без штата.
|
|
Связь «многие-ко-многим», класс принадлежности «необязательный».
Один авто может иметь несколько механиков, один механик может иметь несколько авто.
|
|
Связь «один-ко-многим», класс принадлежности «обязательный».
Один агент может содержать несколько авто, но авто не может быть без агента.
1.1.3 Построение диаграммы
ER- типа
1.1.4 Генерация набора предварительных отношений
CREATE TABLE SCHTAT (
№_Sotrudnika INTEGER NOT NULL,
Data_priema DATE,
FIO CHAR(30),
Dolgnost CHAR(18)
);
CREATE UNIQUE INDEX XPKSCHTAT ON SCHTAT
(
№_Sotrudnika
);
ALTER TABLE SCHTAT
ADD PRIMARY KEY (№_Sotrudnika);
CREATE TABLE AGENT (
№_Agenta CHAR(18) NOT NULL,
№_Sotrudnika INTEGER,
Oklad CHAR(18),
%_ot_prodag CHAR(18)
);
CREATE UNIQUE INDEX XPKAGENT ON AGENT
(
№_Agenta,
№_Sotrudnika
);
ALTER TABLE AGENT
ADD PRIMARY KEY (№_Agenta, №_Sotrudnika);
CREATE TABLE PRODAGI (
№_Sotrudnika INTEGER NOT NULL,
№_Agenta INTEGER,
№_Prodagi CHAR(18) NOT NULL,
№_Avto INTEGER,
Data_prodagi DATE,
Cena CHAR(18)
);
CREATE UNIQUE INDEX XPKPRODAGI ON PRODAGI
(
№_Sotrudnika,
№_Agenta,
№_Prodagi
);
ALTER TABLE PRODAGI
ADD PRIMARY KEY (№_Sotrudnika, №_Agenta, №_Prodagi);
CREATE TABLE AVTO (
№_Avto INTEGER NOT NULL,
№_Agenta INTEGER NOT NULL,
Color CHAR(18),
Marka CHAR(18),
Model CHAR(18)
)
CREATE UNIQUE INDEX XPKAVTO ON AVTO
(
№_Avto
);
ALTER TABLE AVTO
ADD PRIMARY KEY (№_Avto);
CREATE TABLE AVTO_PRODAGI (
№_Sotrudnika INTEGER,
№_Agenta INTEGER,
№_Avto INTEGER,
№_Prodagi INTEGER
);
CREATE TABLE MEXAN (
№_Mexanika INTEGER NOT NULL,
№_Sotrudnika INTEGER,
Oklad CHAR(18)
);
CREATE UNIQUE INDEX XPKMEXAN ON MEXAN
(
№_Mexanika,
№_Sotrudnika
);
ALTER TABLE MEXAN
ADD PRIMARY KEY (№_Mexanika, №_Sotrudnika);
CREATE TABLE MEXAN_AVTO (
№_Remonta INTEGER NOT NULL,
№_Sotrudnika INTEGER,
№_Mexanika INTEGER,
№_Avto INTEGER,
Data DATE,
Clock CHAR(20)
);
CREATE TABLE SECRETAR (
№_Secretar INTEGER NOT NULL,
№_Sotrudnika INTEGER,
Oklad CHAR(18)
);
CREATE UNIQUE INDEX XPKSECRETAR ON SECRETAR
(
№_Secretar,
№_Sotrudnika
);
ALTER TABLE SECRETAR
ADD PRIMARY KEY (№_Secretar, №_Sotrudnika);
ALTER TABLE AGENT
ADD FOREIGN KEY (№_Sotrudnika)
REFERENCES SCHTAT;
ALTER TABLE PRODAGI
ADD FOREIGN KEY (№_Agenta, №_Sotrudnika)
REFERENCES AGENT;
ALTER TABLE AVTO_PRODAGI
ADD FOREIGN KEY (№_Sotrudnika, №_Agenta, №_Prodagi)
REFERENCES PRODAGI;
ALTER TABLE AVTO_PRODAGI
ADD FOREIGN KEY (№_Avto)
REFERENCES AVTO;
ALTER TABLE MEXAN
ADD FOREIGN KEY (№_Sotrudnika)
REFERENCES SCHTAT;
ALTER TABLE MEXAN_AVTO
ADD FOREIGN KEY (№_Avto)
REFERENCES AVTO;
ALTER TABLE MEXAN_AVTO
ADD FOREIGN KEY (№_Mexanika, №_Sotrudnika)
REFERENCES MEXAN;
ALTER TABLE SECRETAR
ADD FOREIGN KEY (№_Sotrudnika)
REFERENCES
SCHTAT
;
1.2. Проектирование базы данных с помощью
CASE – средств (
Erwin)
Erwin является CASE-пакетом (Computer Aided Software Engineering), предоставляющим разработчику широкие возможности по созданию информационной модели будущего программного обеспечения.
В создании информационной модели можно выделить следующую последовательность действий:
2. создание логической модели
3. создание физической модели
4. тестирование модели
5. генерация скрипта
1.2.1. Коротко о используемой нотации (
IDEF1
X)
IDEF1X является методом для разработки реляционных баз данных и использует условный синтаксис, специально разработанный для удобного построения концептуальной схемы. Концептуальной схемой мы называем универсальное представление структуры данных в рамках коммерческого предприятия, независимое от конечной реализации базы данных и аппаратной платформы. Будучи статическим методом разработки, IDEF1X изначально не предназначен для динамического анализа по принципу "AS IS", тем не менее, он иногда применяется в этом качестве, как альтернатива методу IDEF1. Использование метода IDEF1X наиболее целесообразно для построения логической структуры базы данных после того, как все информационные ресурсы исследованы и решение о внедрении реляционной базы данных, как части корпоративной информационной системы, было принято. Однако не стоит забывать, что средства моделирования IDEF1X специально разработаны для построения реляционных информационных систем, и если существует необходимость проектирования другой системы, скажем объектно-ориентированной, то лучше избрать другие методы моделирования.
IDEF1X требует от проектировщика определить ключевые атрибуты, для того чтобы отличить одну сущность от другой, в то время как объектно-ориентированные системы не требуют задания ключевых ключей, в целях идентифицирования объектов. В тех случаях, когда более чем один атрибут является однозначно идентифицирующим сущность, проектировщик должен определить один из этих атрибутов первичным ключом, а все остальные вторичными.
1.2.2 Логическая модель с комментариями
Создание логической модели заключается в выделении Сущностей предметной области и Связей между ними.
Сущности:
Создадим сущности: штат, механики, секретари, агенты, авто, продажи, механ-авто.
Для каждой сущности существует свой список элементов, в котором выделяются атрибуты (Attributes), ключевые поля (Key Groups), связи (Relationships). Связи:
После определения типа связи устанавливается степень связи.
В нашей БД, в основном, используется связь один ко многим (1:N)
Связь между таблицами штат и агенты, механики, секретари осуществляется отношением один ко многим, т.е у одного штата может быть несколько агентов, механиков, секретарей, а у них только один штат.
Связь между таблицами механ- авто и среда обитания осуществляется отношением многие ко многим(N:M), т. е. один танк может иметь несколько сред обитания, одна среда может иметь несколько танков. Erwin же предполагает раскрытие такой связи через сущность-связь. То есть между этими сущностями добавляется ещё одна сущность, которая имеет название связи. В данном случае «Знает». Первичного ключа у неё нету, при необходимости добавляются атрибуты. Связь
«N:M» разрывается на 2 связи «N:1». Причём N идёт от основных сущностей, а 1 идёт к сущности-связи.
Определение действий связи
(
RI
Actions)
Действия представляют собой реакцию будущей базы данных на основные операции с данными в каждой сущности. Например, как отреагирует БД при Добавлении/Обновлении/Удалении данных в каждую из таблиц-сущностей.
Для установки Действий в диалоговом окне настроек связи необходимо перейти на вкладку RI Actions
В строке Relationships сущности указываются в порядке Parent/Child. Соответственно для каждой из связываемых сущностей представлены Действия: Удаление Delete, Обновление Update и добавление Insert. В перечне действий представлены следующие:
- NONE (при совершении действия, операция выполняется только над данными этой сущности и связываемые сущности не затрагиваются)
-RESTRICT (запрещается выполнять данное действие над этой сущностью)
-CASCADE (действие совершается над данной сущностью и всеми связанными с ней сущностями)
-SET DEFAULT (значение по умолчанию, как правило оно равно NONE).
1.2.3
Физическая
модель
с
комментариями
На физическом уровне определяются типы атрибутов сущностей в соответствии с тем, какими они будут в программе (integer, float, varchar).
В соответствии с выбранной СУБД Erwin автоматически выставляет типы данных. При необходимости можно заменить типы данных атрибутов.
1.2.4
SQL –скрипт
Итогом создания Информационной модели является сгенерированный sql – скрипт, на основе которого в дальнейшем можно строить базу данных.
SQL-скрипт находится в ПРИЛОЖЕНИИ №1
1.3 Тестирование информационной модели с использованием
CASE пакета
Тестирование модели производится с помощью средства Erwin Examiner.
1.3.1 Исходный протокол
1.3.2 Анализ
ErWin Examinator указывает на ошибку в Primary key в таб. MEXAN-AVTO, но эта таблица является связью между сущностями и поэтому первичный ключ не обязательно должен присутствовать.
1.3.3 Итоговый протокол
Т.к. ошибки, указанные в исходном протоколе являются незначительными и могут не исправляться, то итоговый протокол совпадает с исходным.
|
Interbase,
Oracle)
2.1 Краткая характеристика СУБД
Современная СУБД Oracle это мощнейший программный комплекс, позволяющий создавать приложения любой сложности. Ядром этого комплекса является база данных, хранящая информацию, количество которой за счет предоставляемых средств масштабирования практически безгранично. C высокой эффективностью работать с этой информацией одновременно может практически любое количество пользователей (при наличии достаточных аппаратных ресурсов), не проявляя тенденции к снижению производительности системы при резком увеличении их числа
|
В ходе создания базы данных для хранения информации о работе колледжа получены:
ü навыки проектирования базы данных методом сущность-связь: выделение сущностей и их ключей, определение связей и их характеристик, построение диаграммы ER-типа, генерации набора предварительных отношений
ü практические навыки создания информационной модели в Erwin: создания логической и физической моделей, выделение Сущностей предметной области и Связей между ними, определение действий Связи, генерации SQL-скрипта
ü тестирование информационной модели
Cписок литературы
|
1. К. Дж. Дейт. «Введение в системы баз данных». Диалектика. Киев, Москва 1998г.
3. Д. Мейер. Теория реляционных баз данных. Москва, Мир, 1997г
|
ПРИЛОЖЕНИЕ
SQL-скрипт
CREATE TABLE SCHTAT (
№_Sotrudnika INTEGER NOT NULL,
Data_priema DATE,
FIO CHAR(30),
Dolgnost CHAR(18)
);
CREATE UNIQUE INDEX XPKSCHTAT ON SCHTAT
(
№_Sotrudnika
);
ALTER TABLE SCHTAT
ADD PRIMARY KEY (№_Sotrudnika);
CREATE TABLE AGENT (
№_Agenta CHAR(18) NOT NULL,
№_Sotrudnika INTEGER,
Oklad CHAR(18),
%_ot_prodag CHAR(18)
);
CREATE UNIQUE INDEX XPKAGENT ON AGENT
(
№_Agenta,
№_Sotrudnika
);
ALTER TABLE AGENT
ADD PRIMARY KEY (№_Agenta, №_Sotrudnika);
CREATE TABLE PRODAGI (
№_Sotrudnika INTEGER NOT NULL,
№_Agenta INTEGER,
№_Prodagi CHAR(18) NOT NULL,
№_Avto INTEGER,
Data_prodagi DATE,
Cena CHAR(18)
);
CREATE UNIQUE INDEX XPKPRODAGI ON PRODAGI
(
№_Sotrudnika,
№_Agenta,
№_Prodagi
);
ALTER TABLE PRODAGI
ADD PRIMARY KEY (№_Sotrudnika, №_Agenta, №_Prodagi);
CREATE TABLE AVTO (
№_Avto INTEGER NOT NULL,
№_Agenta INTEGER NOT NULL,
Color CHAR(18),
Marka CHAR(18),
Model CHAR(18)
);
CREATE UNIQUE INDEX XPKAVTO ON AVTO
(
№_Avto
);
ALTER TABLE AVTO
ADD PRIMARY KEY (№_Avto);
CREATE TABLE AVTO_PRODAGI (
№_Sotrudnika INTEGER,
№_Agenta INTEGER,
№_Avto INTEGER,
№_Prodagi INTEGER
);
CREATE TABLE MEXAN (
№_Mexanika INTEGER NOT NULL,
№_Sotrudnika INTEGER,
Oklad CHAR(18)
);
CREATE UNIQUE INDEX XPKMEXAN ON MEXAN
(
№_Mexanika,
№_Sotrudnika
);
ALTER TABLE MEXAN
ADD PRIMARY KEY (№_Mexanika, №_Sotrudnika);
CREATE TABLE MEXAN_AVTO (
№_Remonta INTEGER NOT NULL,
№_Sotrudnika INTEGER,
№_Mexanika INTEGER,
№_Avto INTEGER,
Data DATE,
Clock CHAR(20)
);
CREATE TABLE SECRETAR (
№_Secretar INTEGER NOT NULL,
№_Sotrudnika INTEGER,
Oklad CHAR(18)
);
CREATE UNIQUE INDEX XPKSECRETAR ON SECRETAR
(
№_Secretar,
№_Sotrudnika
);
ALTER TABLE SECRETAR
ADD PRIMARY KEY (№_Secretar, №_Sotrudnika);
ALTER TABLE AGENT
ADD FOREIGN KEY (№_Sotrudnika)
REFERENCES SCHTAT;
ALTER TABLE PRODAGI
ADD FOREIGN KEY (№_Agenta, №_Sotrudnika)
REFERENCES AGENT;
ALTER TABLE AVTO_PRODAGI
ADD FOREIGN KEY (№_Sotrudnika, №_Agenta, №_Prodagi)
REFERENCES PRODAGI;
ALTER TABLE AVTO_PRODAGI
ADD FOREIGN KEY (№_Avto)
REFERENCES AVTO;
ALTER TABLE MEXAN
ADD FOREIGN KEY (№_Sotrudnika)
REFERENCES SCHTAT;
ALTER TABLE MEXAN_AVTO
ADD FOREIGN KEY (№_Avto)
REFERENCES AVTO;
ALTER TABLE MEXAN_AVTO
ADD FOREIGN KEY (№_Mexanika, №_Sotrudnika)
REFERENCES MEXAN;
ALTER TABLE SECRETAR
ADD FOREIGN KEY (№_Sotrudnika)
REFERENCES SCHTAT;
CREATE EXCEPTION ERWIN_PARENT_INSERT_RESTRICT "Cannot INSERT Parent table because Child table exists.";
CREATE EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT "Cannot UPDATE Parent table because Child table exists.";
CREATE EXCEPTION ERWIN_PARENT_DELETE_RESTRICT "Cannot DELETE Parent table because Child table exists.";
CREATE EXCEPTION ERWIN_CHILD_INSERT_RESTRICT "Cannot INSERT Child table because Parent table does not exist.";
CREATE EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT "Cannot UPDATE Child table because Parent table does not exist.";
CREATE EXCEPTION ERWIN_CHILD_DELETE_RESTRICT "Cannot DELETE Child table because Parent table does not exist.";
CREATE TRIGGER tD_SCHTAT FOR SCHTAT AFTER DELETE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* DELETE trigger on SCHTAT */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/25 SECRETAR ON PARENT DELETE RESTRICT */
select count(*)
from SECRETAR
where
/* %JoinFKPK(SECRETAR,OLD," = "," and") */
SECRETAR.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_DELETE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/10 AGENT ON PARENT DELETE RESTRICT */
select count(*)
from AGENT
where
/* %JoinFKPK(AGENT,OLD," = "," and") */
AGENT.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_DELETE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/2 MEXAN ON PARENT DELETE RESTRICT */
select count(*)
from MEXAN
where
/* %JoinFKPK(MEXAN,OLD," = "," and") */
MEXAN.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_DELETE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_SCHTAT FOR SCHTAT AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on SCHTAT */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/25 SECRETAR ON PARENT UPDATE RESTRICT */
IF
/* %JoinPKPK(OLD,NEW," <> "," or ") */
(OLD.№_Sotrudnika <> NEW.№_Sotrudnika) THEN
BEGIN
select count(*)
from SECRETAR
where
/* %JoinFKPK(SECRETAR,OLD," = "," and") */
SECRETAR.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT;
END
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/10 AGENT ON PARENT UPDATE RESTRICT */
IF
/* %JoinPKPK(OLD,NEW," <> "," or ") */
(OLD.№_Sotrudnika <> NEW.№_Sotrudnika) THEN
BEGIN
select count(*)
from AGENT
where
/* %JoinFKPK(AGENT,OLD," = "," and") */
AGENT.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT;
END
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/2 MEXAN ON PARENT UPDATE RESTRICT */
IF
/* %JoinPKPK(OLD,NEW," <> "," or ") */
(OLD.№_Sotrudnika <> NEW.№_Sotrudnika) THEN
BEGIN
select count(*)
from MEXAN
where
/* %JoinFKPK(MEXAN,OLD," = "," and") */
MEXAN.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT;
END
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tD_AGENT FOR AGENT AFTER DELETE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* DELETE trigger on AGENT */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AGENT R/24 PRODAGI ON PARENT DELETE RESTRICT */
select count(*)
from PRODAGI
where
/* %JoinFKPK(PRODAGI,OLD," = "," and") */
PRODAGI.№_Agenta = OLD.№_Agenta and
PRODAGI.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_DELETE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_AGENT FOR AGENT AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on AGENT */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/10 AGENT ON CHILD INSERT RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_INSERT_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_AGENT FOR AGENT AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on AGENT */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AGENT R/24 PRODAGI ON PARENT UPDATE RESTRICT */
IF
/* %JoinPKPK(OLD,NEW," <> "," or ") */
(OLD.№_Agenta <> NEW.№_Agenta or
OLD.№_Sotrudnika <> NEW.№_Sotrudnika) THEN
BEGIN
select count(*)
from PRODAGI
where
/* %JoinFKPK(PRODAGI,OLD," = "," and") */
PRODAGI.№_Agenta = OLD.№_Agenta and
PRODAGI.№_Sotrudnika = OLD.№_Sotrudnika into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT;
END
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/10 AGENT ON CHILD UPDATE RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tD_PRODAGI FOR PRODAGI AFTER DELETE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* DELETE trigger on PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* PRODAGI R/29 AVTO_PRODAGI ON PARENT DELETE SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Sotrudnika = NULL,
AVTO_PRODAGI.№_Agenta = NULL,
AVTO_PRODAGI.№_Prodagi = NULL
where
/* %JoinFKPK(AVTO_PRODAGI,OLD," = "," and") */
AVTO_PRODAGI.№_Sotrudnika = OLD.№_Sotrudnika and
AVTO_PRODAGI.№_Agenta = OLD.№_Agenta and
AVTO_PRODAGI.№_Prodagi = OLD.№_Prodagi;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_PRODAGI FOR PRODAGI AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AGENT R/24 PRODAGI ON CHILD INSERT RESTRICT */
select count(*)
from AGENT
where
/* %JoinFKPK(NEW,AGENT," = "," and") */
NEW.№_Agenta = AGENT.№_Agenta and
NEW.№_Sotrudnika = AGENT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_INSERT_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_PRODAGI FOR PRODAGI AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* PRODAGI R/29 AVTO_PRODAGI ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Sotrudnika <> NEW.№_Sotrudnika or
OLD.№_Agenta <> NEW.№_Agenta or
OLD.№_Prodagi <> NEW.№_Prodagi) THEN
BEGIN
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Sotrudnika = NULL,
AVTO_PRODAGI.№_Agenta = NULL,
AVTO_PRODAGI.№_Prodagi = NULL
where
/* %JoinFKPK(AVTO_PRODAGI,OLD," = ",",") */
AVTO_PRODAGI.№_Sotrudnika = OLD.№_Sotrudnika and
AVTO_PRODAGI.№_Agenta = OLD.№_Agenta and
AVTO_PRODAGI.№_Prodagi = OLD.№_Prodagi;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AGENT R/24 PRODAGI ON CHILD UPDATE RESTRICT */
select count(*)
from AGENT
where
/* %JoinFKPK(NEW,AGENT," = "," and") */
NEW.№_Agenta = AGENT.№_Agenta and
NEW.№_Sotrudnika = AGENT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tD_AVTO FOR AVTO AFTER DELETE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* DELETE trigger on AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/28 AVTO_PRODAGI ON PARENT DELETE SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
/* %JoinFKPK(AVTO_PRODAGI,OLD," = "," and") */
AVTO_PRODAGI.№_Avto = OLD.№_Avto;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/27 MEXAN_AVTO ON PARENT DELETE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = "," and") */
MEXAN_AVTO.№_Avto = OLD.№_Avto;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_AVTO FOR AVTO AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* AVTO R/28 AVTO_PRODAGI ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Avto <> NEW.№_Avto) THEN
BEGIN
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
/* %JoinFKPK(AVTO_PRODAGI,OLD," = ",",") */
AVTO_PRODAGI.№_Avto = OLD.№_Avto;
END
/* AVTO R/27 MEXAN_AVTO ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Avto <> NEW.№_Avto) THEN
BEGIN
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = ",",") */
MEXAN_AVTO.№_Avto = OLD.№_Avto;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_AVTO_PRODAGI FOR AVTO_PRODAGI AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on AVTO_PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* PRODAGI R/29 AVTO_PRODAGI ON CHILD INSERT SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Sotrudnika = NULL,
AVTO_PRODAGI.№_Agenta = NULL,
AVTO_PRODAGI.№_Prodagi = NULL
where
not exists (
select * from PRODAGI
where
/* %JoinFKPK(NEW,PRODAGI," = "," and") */
NEW.№_Sotrudnika = PRODAGI.№_Sotrudnika and
NEW.№_Agenta = PRODAGI.№_Agenta and
NEW.№_Prodagi = PRODAGI.№_Prodagi
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/28 AVTO_PRODAGI ON CHILD INSERT SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_AVTO_PRODAGI FOR AVTO_PRODAGI AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on AVTO_PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* PRODAGI R/29 AVTO_PRODAGI ON CHILD UPDATE SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Sotrudnika = NULL,
AVTO_PRODAGI.№_Agenta = NULL,
AVTO_PRODAGI.№_Prodagi = NULL
where
not exists (
select * from PRODAGI
where
/* %JoinFKPK(NEW,PRODAGI," = "," and") */
NEW.№_Sotrudnika = PRODAGI.№_Sotrudnika and
NEW.№_Agenta = PRODAGI.№_Agenta and
NEW.№_Prodagi = PRODAGI.№_Prodagi
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/28 AVTO_PRODAGI ON CHILD UPDATE SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tD_MEXAN FOR MEXAN AFTER DELETE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* DELETE trigger on MEXAN */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* MEXAN R/26 MEXAN_AVTO ON PARENT DELETE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = "," and") */
MEXAN_AVTO.№_Mexanika = OLD.№_Mexanika and
MEXAN_AVTO.№_Sotrudnika = OLD.№_Sotrudnika;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_MEXAN FOR MEXAN AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on MEXAN */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/2 MEXAN ON CHILD INSERT RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_INSERT_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_MEXAN FOR MEXAN AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on MEXAN */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* MEXAN R/26 MEXAN_AVTO ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Mexanika <> NEW.№_Mexanika or
OLD.№_Sotrudnika <> NEW.№_Sotrudnika) THEN
BEGIN
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = ",",") */
MEXAN_AVTO.№_Mexanika = OLD.№_Mexanika and
MEXAN_AVTO.№_Sotrudnika = OLD.№_Sotrudnika;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/2 MEXAN ON CHILD UPDATE RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_MEXAN_AVTO FOR MEXAN_AVTO AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on MEXAN_AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/27 MEXAN_AVTO ON CHILD INSERT SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* MEXAN R/26 MEXAN_AVTO ON CHILD INSERT SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
not exists (
select * from MEXAN
where
/* %JoinFKPK(NEW,MEXAN," = "," and") */
NEW.№_Mexanika = MEXAN.№_Mexanika and
NEW.№_Sotrudnika = MEXAN.№_Sotrudnika
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_MEXAN_AVTO FOR MEXAN_AVTO AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on MEXAN_AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/27 MEXAN_AVTO ON CHILD UPDATE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* MEXAN R/26 MEXAN_AVTO ON CHILD UPDATE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
not exists (
select * from MEXAN
where
/* %JoinFKPK(NEW,MEXAN," = "," and") */
NEW.№_Mexanika = MEXAN.№_Mexanika and
NEW.№_Sotrudnika = MEXAN.№_Sotrudnika
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_SECRETAR FOR SECRETAR AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on SECRETAR */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/25 SECRETAR ON CHILD INSERT RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_INSERT_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_SECRETAR FOR SECRETAR AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on SECRETAR */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/25 SECRETAR ON CHILD UPDATE RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_INSERT_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_PRODAGI FOR PRODAGI AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* PRODAGI R/29 AVTO_PRODAGI ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Sotrudnika <> NEW.№_Sotrudnika or
OLD.№_Agenta <> NEW.№_Agenta or
OLD.№_Prodagi <> NEW.№_Prodagi) THEN
BEGIN
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Sotrudnika = NULL,
AVTO_PRODAGI.№_Agenta = NULL,
AVTO_PRODAGI.№_Prodagi = NULL
where
/* %JoinFKPK(AVTO_PRODAGI,OLD," = ",",") */
AVTO_PRODAGI.№_Sotrudnika = OLD.№_Sotrudnika and
AVTO_PRODAGI.№_Agenta = OLD.№_Agenta and
AVTO_PRODAGI.№_Prodagi = OLD.№_Prodagi;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AGENT R/24 PRODAGI ON CHILD UPDATE RESTRICT */
select count(*)
from AGENT
where
/* %JoinFKPK(NEW,AGENT," = "," and") */
NEW.№_Agenta = AGENT.№_Agenta and
NEW.№_Sotrudnika = AGENT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tD_AVTO FOR AVTO AFTER DELETE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* DELETE trigger on AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/28 AVTO_PRODAGI ON PARENT DELETE SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
/* %JoinFKPK(AVTO_PRODAGI,OLD," = "," and") */
AVTO_PRODAGI.№_Avto = OLD.№_Avto;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/27 MEXAN_AVTO ON PARENT DELETE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = "," and") */
MEXAN_AVTO.№_Avto = OLD.№_Avto;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_AVTO FOR AVTO AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* AVTO R/28 AVTO_PRODAGI ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Avto <> NEW.№_Avto) THEN
BEGIN
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
/* %JoinFKPK(AVTO_PRODAGI,OLD," = ",",") */
AVTO_PRODAGI.№_Avto = OLD.№_Avto;
END
/* AVTO R/27 MEXAN_AVTO ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Avto <> NEW.№_Avto) THEN
BEGIN
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = ",",") */
MEXAN_AVTO.№_Avto = OLD.№_Avto;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_AVTO_PRODAGI FOR AVTO_PRODAGI AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on AVTO_PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* PRODAGI R/29 AVTO_PRODAGI ON CHILD INSERT SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Sotrudnika = NULL,
AVTO_PRODAGI.№_Agenta = NULL,
AVTO_PRODAGI.№_Prodagi = NULL
where
not exists (
select * from PRODAGI
where
/* %JoinFKPK(NEW,PRODAGI," = "," and") */
NEW.№_Sotrudnika = PRODAGI.№_Sotrudnika and
NEW.№_Agenta = PRODAGI.№_Agenta and
NEW.№_Prodagi = PRODAGI.№_Prodagi
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/28 AVTO_PRODAGI ON CHILD INSERT SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_AVTO_PRODAGI FOR AVTO_PRODAGI AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on AVTO_PRODAGI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* PRODAGI R/29 AVTO_PRODAGI ON CHILD UPDATE SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Sotrudnika = NULL,
AVTO_PRODAGI.№_Agenta = NULL,
AVTO_PRODAGI.№_Prodagi = NULL
where
not exists (
select * from PRODAGI
where
/* %JoinFKPK(NEW,PRODAGI," = "," and") */
NEW.№_Sotrudnika = PRODAGI.№_Sotrudnika and
NEW.№_Agenta = PRODAGI.№_Agenta and
NEW.№_Prodagi = PRODAGI.№_Prodagi
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/28 AVTO_PRODAGI ON CHILD UPDATE SET NULL */
update AVTO_PRODAGI
set
/* %SetFK(AVTO_PRODAGI,NULL) */
AVTO_PRODAGI.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(AVTO_PRODAGI,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tD_MEXAN FOR MEXAN AFTER DELETE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* DELETE trigger on MEXAN */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* MEXAN R/26 MEXAN_AVTO ON PARENT DELETE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = "," and") */
MEXAN_AVTO.№_Mexanika = OLD.№_Mexanika and
MEXAN_AVTO.№_Sotrudnika = OLD.№_Sotrudnika;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_MEXAN FOR MEXAN AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on MEXAN */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/2 MEXAN ON CHILD INSERT RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_INSERT_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_MEXAN FOR MEXAN AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on MEXAN */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* MEXAN R/26 MEXAN_AVTO ON PARENT UPDATE SET NULL */
IF
/* %JoinPKPK(OLD,NEW," <> "," or " */
(OLD.№_Mexanika <> NEW.№_Mexanika or
OLD.№_Sotrudnika <> NEW.№_Sotrudnika) THEN
BEGIN
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
/* %JoinFKPK(MEXAN_AVTO,OLD," = ",",") */
MEXAN_AVTO.№_Mexanika = OLD.№_Mexanika and
MEXAN_AVTO.№_Sotrudnika = OLD.№_Sotrudnika;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/2 MEXAN ON CHILD UPDATE RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_MEXAN_AVTO FOR MEXAN_AVTO AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on MEXAN_AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/27 MEXAN_AVTO ON CHILD INSERT SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* MEXAN R/26 MEXAN_AVTO ON CHILD INSERT SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
not exists (
select * from MEXAN
where
/* %JoinFKPK(NEW,MEXAN," = "," and") */
NEW.№_Mexanika = MEXAN.№_Mexanika and
NEW.№_Sotrudnika = MEXAN.№_Sotrudnika
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_MEXAN_AVTO FOR MEXAN_AVTO AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on MEXAN_AVTO */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* AVTO R/27 MEXAN_AVTO ON CHILD UPDATE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Avto = NULL
where
not exists (
select * from AVTO
where
/* %JoinFKPK(NEW,AVTO," = "," and") */
NEW.№_Avto = AVTO.№_Avto
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* MEXAN R/26 MEXAN_AVTO ON CHILD UPDATE SET NULL */
update MEXAN_AVTO
set
/* %SetFK(MEXAN_AVTO,NULL) */
MEXAN_AVTO.№_Mexanika = NULL,
MEXAN_AVTO.№_Sotrudnika = NULL
where
not exists (
select * from MEXAN
where
/* %JoinFKPK(NEW,MEXAN," = "," and") */
NEW.№_Mexanika = MEXAN.№_Mexanika and
NEW.№_Sotrudnika = MEXAN.№_Sotrudnika
) and
/* %JoinPKPK(MEXAN_AVTO,NEW," = "," and") */
;
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tI_SECRETAR FOR SECRETAR AFTER INSERT AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* INSERT trigger on SECRETAR */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/25 SECRETAR ON CHILD INSERT RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_INSERT_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!
CREATE TRIGGER tU_SECRETAR FOR SECRETAR AFTER UPDATE AS
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* UPDATE trigger on SECRETAR */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
/* SCHTAT R/25 SECRETAR ON CHILD UPDATE RESTRICT */
select count(*)
from SCHTAT
where
/* %JoinFKPK(NEW,SCHTAT," = "," and") */
NEW.№_Sotrudnika = SCHTAT.№_Sotrudnika into numrows;
IF (
/* %NotnullFK(NEW," is not null and") */
numrows = 0
) THEN
BEGIN
EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT;
END
/* ERwin Builtin Fri Dec 11 20:50:53 2009 */
END !!