игра брюс 2048
Главная / Базы данных / Основы SQL / Тест 15

Основы SQL - тест 15

Упражнение 1:
Номер 1
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для вставки новой записи, причем, когда начальное событие не равно "1", необходимо отменить ввод, если конечное событие еще не было введено как начальное.

CREATE TRIGGER trig_ins ON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) IF NOT EXISTS( SELECT * FROM inserted WHERE нач_соб=1) IF NOT EXISTS(SELECT * FROM Граф       WHERE кон_соб=ALL( SELECT нач_соб FROM inserted)) ROLLBACK TRAN 

 (2) IF NOT EXISTS( SELECT * FROM inserted WHERE нач_соб=1) AND    NOT EXISTS(SELECT * FROM Граф       WHERE кон_соб=ALL( SELECT нач_соб FROM inserted)) ROLLBACK TRAN 

 (3) IF NOT EXISTS( SELECT * FROM inserted WHERE нач_соб=1)) IF NOT EXISTS(SELECT * FROM Граф       WHERE кон_соб=( SELECT нач_соб FROM inserted) ROLLBACK TRAN 

 (4) IF NOT EXISTS( SELECT * FROM inserted WHERE нач_соб=1) AND    NOT EXISTS(SELECT * FROM Граф WHERE кон_соб= inserted.нач_соб) ROLLBACK TRAN 


Номер 2
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для вставки новой записи, причем необходимо отменить ввод, если номер конечного события оказался меньше номера начального события.

CREATE TRIGGER trig_ins ON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) IF EXISTS(SELECT * FROM inserted       WHERE нач_соб>кон_соб) ROLLBACK TRAN 

 (2) IF (SELECT * FROM inserted WHERE нач_соб>кон_соб) ROLLBACK TRAN 

 (3) IF inserted.нач_соб>inserted.кон_соб) ROLLBACK TRAN 

 (4) IF NOT EXISTS(SELECT * FROM inserted       WHERE нач_соб<=кон_соб) ROLLBACK TRAN 


Номер 3
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для вставки новой записи, причем необходимо отменить ввод, если номер начального события оказался меньше номера хотя бы одного конечного события, введенного ранее.

CREATE TRIGGER trig_ins ON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e INT SELECT @e=нач_соб FROM inserted IF EXISTS(SELECT * FROM Граф WHERE кон_соб>@e) ROLLBACK TRAN 

 (2) IF EXISTS(SELECT * FROM Граф       WHERE кон_соб>ANY(SELECT @e=нач_соб FROM inserted) ROLLBACK TRAN 

 (3) IF EXISTS(SELECT * FROM Граф       WHERE кон_соб>(SELECT @e=нач_соб FROM inserted) ROLLBACK TRAN 

 (4) DECLARE @e INT SELECT @e=нач_соб FROM inserted IF NOT EXISTS(SELECT * FROM Граф WHERE кон_соб<@e) ROLLBACK TRAN 


Номер 4
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для вставки новой записи, причем необходимо отменить ввод параллельной работы.

CREATE TRIGGER trig_ins ON Граф FOR INSERT AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e1 INT, @e2 INT,@n INT SELECT @n=номер, @e1=нач_соб, @e2=кон_соб FROM inserted IF EXISTS(SELECT *       FROM Граф       WHERE номер<>@n AND нач_соб=@e1 AND кон_соб=@e2 ) ROLLBACK TRAN 

 (2) IF EXISTS(SELECT *       FROM Граф       WHERE номер<> inserted.номер AND нач_соб= inserted.нач_соб       AND кон_соб= inserted.кон_соб) ROLLBACK TRAN 

 (3) IF EXISTS(SELECT *       FROM Граф       WHERE номер<>( SELECT номер FROM inserted)       AND нач_соб= ( SELECT нач_соб FROM inserted)       AND кон_соб=( SELECT кон_соб FROM inserted) ROLLBACK TRAN 

 (4) DECLARE @e1 INT, @e2 INT,@n INT SELECT @n=номер, @e1=нач_соб, @e2=кон_соб FROM inserted IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер=@n AND нач_соб<>@e1 AND кон_соб<>@e2 ) ROLLBACK TRAN 


Упражнение 2:
Номер 1
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для удаления работы, причем необходимо отменить удаление, если только эта работа и никакая другая приводит к данному конечному событию.

CREATE TRIGGER trig_del ON Граф FOR DELETE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e INT,@n INT SELECT @n=номер, @e=кон_соб FROM deleted    IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<>@n AND кон_соб=@e )    ROLLBACK TRAN 

 (2) DECLARE @e INT,@n INT SELECT @n=номер, @e=кон_соб FROM deleted    IF EXISTS(SELECT *       FROM Граф       WHERE кон_соб<>@e )    ROLLBACK TRAN 

 (3)    IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<>deleted.номер AND кон_соб=deleted.кон_соб )    ROLLBACK TRAN 

 (4)    IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<> (SELECT номер FROM deleted)       AND кон_соб=(SELECT кон_соб FROM deleted))    ROLLBACK TRAN 


Номер 2
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для удаления работы, причем необходимо отменить удаление, если работа оказалась единственной, выходящей из данного события.

CREATE TRIGGER trig_del ON Граф FOR DELETE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e INT,@n INT SELECT @n=номер, @e=нач_соб FROM deleted IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<>@n AND нач_соб=@e ) ROLLBACK TRAN 

 (2) DECLARE @e INT,@n INT SELECT @n=номер, @e=нач_соб FROM deleted IF EXISTS(SELECT *       FROM Граф       WHERE номер<>@n AND нач_соб<>@e ) ROLLBACK TRAN 

 (3)    IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<>deleted.номер AND нач_соб=deleted.нач_соб )    ROLLBACK TRAN 

 (4)    IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<> (SELECT номер FROM deleted)       AND нач_соб=(SELECT нач_соб FROM deleted))    ROLLBACK TRAN 


Номер 3
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для удаления работы, причем при попытке удаления единственной работы, приводящей к данному конечному событию, отменить удаление, заменив в удаляемой работе начальное событие на исток (т.е. на начальное событие под номером 1).

CREATE TRIGGER trig_del ON Граф INSTEAD OF DELETE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e INT,@n INT SELECT @n=номер, @e=кон_соб FROM deleted IF NOT EXISTS(SELECT * FROM Граф       WHERE номер<>@n AND кон_соб=@e )    UPDATE Граф SET нач_соб=1 WHERE номер=@n ELSE    DELETE FROM Граф WHERE номер=@n 

 (2) DECLARE @e INT,@n INT SELECT @n=номер, @e=кон_соб FROM deleted IF EXISTS(SELECT * FROM Граф       WHERE номер<>@n AND кон_соб<>@e )    UPDATE Граф SET нач_соб=1 WHERE номер=@n ELSE    DELETE FROM Граф WHERE @e=кон_соб 

 (3) DECLARE @e INT,@n INT SELECT @n=номер, @e=кон_соб FROM deleted IF NOT EXISTS(SELECT * FROM Граф       WHERE номер<>@n AND кон_соб=@e )    UPDATE Граф SET нач_соб=1 WHERE кон_соб=@e ELSE    DELETE FROM Граф WHERE кон_соб=@e 

 (4) DECLARE @e INT,@n INT SELECT @n=номер, @e=кон_соб FROM deleted IF номер<>@n AND кон_соб=@e    UPDATE Граф SET нач_соб=1 WHERE номер=@n ELSE    DELETE FROM Граф WHERE номер=@n 


Номер 4
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Разработать триггер для удаления работы, причем при попытке удаления единственной работы, выходящей из данного начального события, отменить удаление, заменив в удаляемой работе конечное событие на сток (т.е. на конечное событие с максимальным номером).

CREATE TRIGGER trig_del ON Граф INSTEAD OF DELETE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e INT,@n INT, @m INT SELECT @n=номер, @e=нач_соб FROM deleted SELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@n IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<>@n AND нач_соб=@e )    UPDATE Граф SET кон_соб=@m WHERE номер=@n ELSE    DELETE FROM Граф WHERE номер=@n 

 (2) DECLARE @e INT,@n INT, @m INT SELECT @n=номер, @e=нач_соб FROM deleted SELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@n IF NOT EXISTS(SELECT *       FROM Граф       WHERE нач_соб=@e )    UPDATE Граф SET кон_соб=@m WHERE номер=@n ELSE    DELETE FROM Граф WHERE номер=@n 

 (3) DECLARE @e INT,@n INT, @m INT SELECT @n=номер, @e=нач_соб FROM deleted SELECT @m=MAX(кон_соб) FROM Граф IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<>@n AND нач_соб=@e )    UPDATE Граф SET кон_соб=@m WHERE номер=@n ELSE    DELETE FROM Граф WHERE номер=@n 

 (4) DECLARE @e INT,@n INT, @m INT SELECT @n=номер, @e=нач_соб FROM deleted SELECT @m=MAX(кон_соб) FROM Граф WHERE номер<>@n IF NOT EXISTS(SELECT *       FROM Граф       WHERE номер<>@n AND нач_соб=@e )    UPDATE Граф SET кон_соб=@m WHERE нач_соб=@e ELSE    DELETE FROM Граф WHERE нач_соб=@e 


Упражнение 3:
Номер 1
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Запретить одновременное изменение только номеров начального и конечного событий.

CREATE TRIGGER trig_upd ON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) IF (COLUMNS_UPDATED() & 6)=6    ROLLBACK TRAN 

 (2) IF UPDATE(нач_соб) AND UPDATE(кон_соб)    ROLLBACK TRAN 

 (3) IF UPDATE(нач_соб,кон_соб)    ROLLBACK TRAN 

 (4) IF (COLUMNS_UPDATED() & 2)=2    ROLLBACK TRAN 


Номер 2
В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф
(номер   INT PRIMARY KEY, --номер работы
 нач_соб INT,             --начальное событие
 кон_соб INT,             --конечное событие
 длит    INT)             --длительность работы

				

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Запретить одновременное изменение номеров начального и конечного событий и длительности.

CREATE TRIGGER trig_upd ON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) IF (COLUMNS_UPDATED() & 14)=14    ROLLBACK TRAN 

 (2) IF (нач_соб) AND UPDATE(кон_соб) AND UPDATE(длит)    ROLLBACK TRAN 

 (3) IF UPDATE(нач_соб AND кон_соб AND длит)    ROLLBACK TRAN 

 (4) IF (COLUMNS_UPDATED() & 15)=15    ROLLBACK TRAN 


Номер 3
				

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Если изменяется только номер конечного события и это изменение приводит к появлению параллельной работы, отменить изменение.

CREATE TRIGGER trig_upd ON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) IF (COLUMNS_UPDATED() ^ 4)=4    BEGIN       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @n=номер, @e1=нач_соб, @e2=кон_соб       FROM inserted       IF EXISTS(SELECT *          FROM Граф          WHERE номер<>@n AND нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN    END 

 (2) IF UPDATE(кон_соб)    BEGIN       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @n=номер, @e1=нач_соб, @e2=кон_соб       FROM inserted       IF EXISTS(SELECT *          FROM Граф          WHERE номер<>@n AND нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN    END 

 (3)       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @n=номер, @e1=нач_соб, @e2=кон_соб       FROM inserted IF UPDATE(кон_соб)       IF EXISTS(SELECT *          FROM Граф          WHERE номер<>@n AND нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN 

 (4)       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @e1=нач_соб, @e2=кон_соб       FROM inserted IF (COLUMNS_UPDATED() & 4)=4       IF EXISTS(SELECT *          FROM Граф          WHERE нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN 


Номер 4

В таблице Граф представлен график сетевого планирования:

CREATE TABLE Граф (номер INT PRIMARY KEY, --номер работы нач_соб INT, --начальное событие кон_соб INT, --конечное событие длит INT) --длительность работы

В таблице, моделирующей сетевой график, каждая запись соответствует некоторой работе, связывающей два события: начальное и конечное. Например:

НомерНач_собКон_собДлит
1 2 3 4 5 6 7 8 9 101 1 1 3 4 3 2 5 5 62 4 3 4 5 5 6 6 7 75 12 3 6 2 8 5 4 7 2

Реализуем в виде триггеров ряд правил для обеспечения целостности данных в подобной сетевой структуре. Начальное событие графика (исток) обозначено цифрой "1". Если изменяется только номер начального события и это изменение приводит к появлению параллельной работы, отменить изменение.

CREATE TRIGGER trig_upd ON Граф FOR UPDATE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) IF (COLUMNS_UPDATED() )=2    BEGIN       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @n=номер, @e1=нач_соб, @e2=кон_соб       FROM inserted       IF EXISTS(SELECT *          FROM Граф          WHERE номер<>@n AND нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN    END 

 (2) IF UPDATE(нач_соб)    BEGIN       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @n=номер, @e1=нач_соб, @e2=кон_соб       FROM inserted       IF EXISTS(SELECT *          FROM Граф          WHERE номер<>@n AND нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN    END 

 (3) IF (COLUMNS_UPDATED() & 2)=2       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @e1=нач_соб, @e2=кон_соб       FROM inserted       IF EXISTS(SELECT *          FROM Граф          WHERE нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN 

 (4)       DECLARE @e1 INT, @e2 INT,@n INT       SELECT @e1=нач_соб, @e2=кон_соб       FROM inserted IF UPDATE(нач_соб)       IF EXISTS(SELECT *          FROM Граф          WHERE нач_соб=@e1 AND кон_соб=@e2 )       ROLLBACK TRAN 


Упражнение 4:
Номер 1
				

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph (nomer INT PRIMARY KEY, --номер дуги outp INT, --номер вершины, --из которой дуга выходит inp INT) --номер вершины, -- в которую дуга входит

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

CREATE TRIGGER trig ON graph FOR INSERT AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e1 INT, @e2 INT,@n INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted IF EXISTS(SELECT *       FROM graph       WHERE nomer<>@n AND outp=@e1 AND inp=@e2 ) ROLLBACK TRAN 

 (2) IF EXISTS(SELECT *       FROM graph       WHERE nomer<> inserted.nomer AND outp= inserted.outp       AND inp= inserted.inp) ROLLBACK TRAN 

 (3) IF EXISTS(SELECT *       FROM graph       WHERE nomer<>(SELECT nomer FROM inserted)       AND outp= (SELECT outp FROM inserted)       AND inp=(SELECT inp FROM inserted) ROLLBACK TRAN 

 (4) DECLARE @e1 INT, @e2 INT,@n INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted IF NOT EXISTS(SELECT *       FROM graph       WHERE nomer=@n AND outp<>@e1 AND inp<>@e2 ) ROLLBACK TRAN 


Номер 2
				

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph (nomer INT PRIMARY KEY, --номер дуги outp INT, --номер вершины, --из которой дуга выходит inp INT) --номер вершины, --в которую дуга входит

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

CREATE TRIGGER trig ON graph FOR INSERT AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted    SELECT @k=COUNT(inp)    FROM graph    WHERE inp=@e2 IF @k>3    ROLLBACK 

 (2) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted    IF COUNT(outp)>=3    ROLLBACK 

 (3) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted IF (SELECT COUNT(inp)    FROM graph    WHERE inp=@e1)>=3    ROLLBACK 

 (4) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted IF (COUNT(inp)    FROM graph    WHERE inp=@e1)>=3    ROLLBACK 


Номер 3
				

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph (nomer INT PRIMARY KEY, --номер дуги outp INT, --номер вершины, --из которой дуга выходит inp INT) --номер вершины, --в которую дуга входит

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

CREATE TRIGGER trig ON graph FOR INSERT AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted    SELECT @k=COUNT(outp)    FROM graph    WHERE outp=@e1 IF @k>3    ROLLBACK 

 (2) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted    IF COUNT(outp)>3    ROLLBACK 

 (3) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted IF (SELECT COUNT(outp)    FROM graph    WHERE outp=@e2)>3    ROLLBACK 

 (4) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM inserted IF (COUNT(outp)    FROM graph    WHERE outp=@e2)>3    ROLLBACK 


Упражнение 5:
Номер 1
				

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph (nomer INT PRIMARY KEY, --номер дуги outp INT, --номер вершины, --из которой дуга выходит inp INT) --номер вершины, --в которую дуга входит

Создать триггер, обрабатывающий удаление одной дуги, причем следует запретить удаление, если эта дуга единственная, входящая в некоторую вершину.

CREATE TRIGGER trig ON graph FOR DELETE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted    SELECT @k=COUNT(inp)    FROM graph    WHERE inp=@e2 IF @k=0    ROLLBACK 

 (2) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted    IF COUNT(inp)=0    ROLLBACK 

 (3) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted IF (SELECT COUNT(outp)    FROM graph    WHERE outp=@e2)=1    ROLLBACK 

 (4) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted IF (COUNT(inp)    FROM graph    WHERE outp=@e1)=1 


Номер 2
				

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph (nomer INT PRIMARY KEY, --номер дуги outp INT, --номер вершины, --из которой дуга выходит inp INT) --номер вершины, --в которую дуга входит

Создать триггер, обрабатывающий удаление одной дуги, причем следует запретить удаление, если эта дуга единственная, связывающая некоторые вершины.

CREATE TRIGGER trig ON graph FOR DELETE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e1 INT, @e2 INT,@n INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted IF NOT EXISTS(SELECT *       FROM graph       WHERE nomer<>@n AND outp=@e1 AND inp=@e2 ) ROLLBACK TRAN 

 (2) IF NOT EXISTS(SELECT *       FROM graph       WHERE nomer<> deleted.nomer AND outp= deleted.outp       AND outp= deleted.inp) ROLLBACK TRAN 

 (3) IF NOT EXISTS(SELECT *       FROM graph       WHERE nomer<>(SELECT nomer FROM deleted)       AND outp= (SELECT outp FROM deleted)       AND inp) ROLLBACK TRAN 

 (4) DECLARE @e1 INT, @e2 INT,@n INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted IF EXISTS(SELECT *       FROM graph       WHERE nomer=@n AND outp<>@e1 AND inp<>@e2 ) ROLLBACK TRAN 


Номер 3
				

Дана таблица со структурой, которая описывает некоторый граф:

CREATE TABLE graph (nomer INT PRIMARY KEY, --номер дуги outp INT, --номер вершины, --из которой дуга выходит inp INT) --номер вершины, --в которую дуга входит

Создать триггер, обрабатывающий удаление одной дуги, причем следует запретить удаление, если эта дуга единственная, выходящая из некоторой вершины.

CREATE TRIGGER trig ON graph FOR DELETE AS

Выберите операторы для продолжения текста триггера.


Ответ:

 (1) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted    SELECT @k=COUNT(outp)    FROM graph    WHERE outp=@e1 IF @k=1    ROLLBACK 

 (2) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted    IF COUNT(outp)=1    ROLLBACK 

 (3) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted IF (SELECT COUNT(inp)    FROM graph    WHERE inp=@e1)=1    ROLLBACK 

 (4) DECLARE @e1 INT, @e2 INT,@n INT,@k INT SELECT @n=nomer, @e1=outp, @e2=inp FROM deleted IF (COUNT(outp)    FROM graph    WHERE outp=@e1)=1    ROLLBACK 




Главная / Базы данных / Основы SQL / Тест 15