В таблице Граф представлен график сетевого планирования:
CREATE TABLE Граф(номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы
В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:
Номер | Нач_соб | Кон_соб | Длит |
---|---|---|---|
12345678910 | 1113432556 | 2434556677 | 51236285472 |
Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для вставки новой записи, причем, когда начальное событие не равно "1", необходимо отменить ввод, если конечное событие еще не было введено как начальное.
CREATE TRIGGER trig_insON Граф FOR INSERT AS
Выберите операторы для продолжения текста триггера.
IF NOT EXISTS(SELECT * FROM inserted WHERE нач_соб=1))IF NOT EXISTS(SELECT * FROM Граф WHERE кон_соб=(SELECT нач_соб FROM inserted)ROLLBACK TRAN
IF NOT EXISTS(SELECT * FROM inserted WHERE нач_соб=1) AND NOT EXISTS(SELECT * FROM Граф WHERE кон_соб= inserted.нач_соб)ROLLBACK TRAN
IF NOT EXISTS(SELECT * FROM inserted WHERE нач_соб=1) AND NOT EXISTS(SELECT * FROM Граф WHERE кон_соб=ALL(SELECT нач_соб FROM inserted))ROLLBACK TRAN(Верный ответ)
IF NOT EXISTS(SELECT * FROM inserted WHERE нач_соб=1)IF NOT EXISTS(SELECT * FROM Граф WHERE кон_соб=ALL(SELECT нач_соб FROM inserted))ROLLBACK TRAN(Верный ответ)