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