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

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

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

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

CREATE TRIGGER trig_ins ON Книга FOR INSERT AS

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


Ответ:

 (1) DECLARE @av INT,       @k INT SELECT @av=Код_Автора, @k=количество FROM inserted UPDATE Автор SET тираж=тираж+@k WHERE Код_Автора=@av 

 (2) UPDATE Автор SET тираж=тираж+inserted.количество WHERE Код_Автора=inserted.Код_АВтора 

 (3) UPDATE Автор SET тираж=тираж+(SELECT количество       FROM inserted) WHERE Автор.Код_Автора=inserted.Код_Автора 

 (4) UPDATE Автор SET тираж=тираж+(SELECT количество       FROM inserted    WHERE Автор.Код_Автора=inserted.Код_Автора) 


Номер 2

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

CREATE TRIGGER trig_ins ON Билет FOR INSERT AS

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


Ответ:

 (1) DECLARE @r INT SELECT @r=Номер_рейса FROM inserted UPDATE Рейс SET число_мест=число_мест-1 WHERE Номер_рейса=@r 

 (2) UPDATE Рейс SET число_мест=число_мест-1 WHERE Номер_рейса=inserted.Номер_рейса 

 (3) UPDATE Рейс SET число_мест=число_мест-1 WHERE Номер_рейса=( SELECT Номер_рейса FROM inserted) 

 (4) UPDATE Рейс SET число_мест=число_мест-1 WHERE Рейс.Номер_рейса=( SELECT Номер_рейса FROM inserted) 


Номер 3

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

CREATE TRIGGER trig_ins ON Компонент FOR INSERT AS

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


Ответ:

 (1) DECLARE @b VARCHAR(20),       @s MONEY SELECT @b=Название_блюда, @s=Стоимость_компонента FROM inserted UPDATE Блюдо SET Стоимость_блюда=Стоимость_блюда+@s WHERE Название_блюда=@b 

 (2) UPDATE Блюдо SET Стоимость_блюда= Стоимость_блюда+inserted.Стоимость_компонента WHERE Название_блюда=inserted.Название_блюда 

 (3) UPDATE Блюдо SET Стоимость_блюда=Стоимость_блюда+( SELECT Стоимость_компонента       FROM inserted) WHERE Блюдо.Название_блюда= inserted.Название_блюда 

 (4) UPDATE Блюдо SET Стоимость_блюда=Стоимость_блюда+( SELECT Стоимость_компонента       FROM inserted    WHERE Блюдо.Название_блюда= inserted.Название_блюда) 


Номер 4

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

CREATE TRIGGER trig_ins ON Разговор FOR INSERT AS

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


Ответ:

 (1) DECLARE @c INT,       @d INT SELECT @c=Код_Города, @d=продолжительность FROM inserted UPDATE Город SET длит_связи=длит_связи+@d WHERE Код_Города=@c 

 (2) UPDATE Город SET длит_связи= длит_связи+inserted.продолжительность WHERE Код_Города=inserted.Код_Города 

 (3) UPDATE Разговор SET длит_связи=длит_связи+( SELECT продолжительность       FROM inserted) WHERE Город.Код_Города=inserted.Код_Города 

 (4) UPDATE Город SET длит_связи=длит_связи+( SELECT продолжительность       FROM inserted)    WHERE Город.Код_Города=inserted.Код_Города 


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

Даны таблицы Книга и Автор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором авторе из таблицы Автор. При этом необходимо запретить удаление, если упомянутый автор издавал свои книги в издательстве "Мир".

CREATE TRIGGER trig_del ON Автор FOR DELETE AS

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


Ответ:

 (1) DECLARE @av INT,       @k INT SELECT @av=Код_Автора FROM deleted IF EXISTS (SELECT *     FROM Книга     WHERE Код_Автора=@av AND Издательство='Мир') ROLLBACK TRAN 

 (2) IF EXISTS (SELECT *    FROM Книга    WHERE Код_Автора=deleted.Код_Автора AND Издательство='Мир') ROLLBACK TRAN 

 (3) IF EXISTS (SELECT Код_Автора    FROM Книга    WHERE Издательство='Мир') ROLLBACK TRAN 

 (4) IF EXISTS (SELECT Код_Автора    FROM Книга    WHERE Книга.Код_Автора=deleted.Код_Автора AND Издательство='Мир') ROLLBACK TRAN 


Номер 2

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

CREATE TRIGGER trig_del ON Рейс FOR DELETE AS

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


Ответ:

 (1) DECLARE @r INT SELECT @r=Номер_рейса FROM deleted DELETE FROM Билет WHERE Номер_рейса=@r 

 (2) DELETE FROM Билет WHERE Номер_рейса=deleted.Номер_рейса 

 (3) DELETE FROM Билет WHERE Номер_рейса=(SELECT Номер_рейса       FROM deleted) 

 (4) DELETE FROM Билет WHERE Номер_рейса=(SELECT Номер_рейса     FROM deleted     WHERE Рейс.Номер_рейса=deleted.Номер_рейса)  


Номер 3

Даны таблицы Блюдо и Компонент. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором блюде из таблицы Блюдо. При этом в таблице Компонент необходимо для всех компонентов удаленного блюда в качестве значения поля Название_блюда поставить значение NULL.

CREATE TRIGGER trig_del ON Блюдо FOR DELETE AS

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


Ответ:

 (1) DECLARE @b VARCHAR(20) SELECT @b=Название_блюда FROM deleted UPDATE Компонент SET Название_блюда=NULL WHERE Название_блюда=@b 

 (2) DECLARE @b VARCHAR(20) SELECT @b=Название_блюдаFROM deleted UPDATE Компонент SET Название_блюда is NULL WHERE Название_блюда=@b 

 (3) UPDATE Компонент SET Название_блюда is NULL WHERE Название_блюда=deleted.Название_блюда 

 (4) UPDATE Компонент SET Название_блюда = NULL WHERE Название_блюда=(SELECT Название_блюда       FROM deleted) 


Номер 4

Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо для всех телефонных разговоров с удаленным городом в качестве значения поля Код_Города поставить значение 0.

CREATE TRIGGER trig_del ON Город FOR DELETE AS

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


Ответ:

 (1) DECLARE @c INT SELECT @c=Код_Города FROM deleted UPDATE Разговор SET Код_Города=0 WHERE Код_Города=@c 

 (2) UPDATE Разговор SET Код_Города=0 WHERE Код_Города=deleted.Код_Города 

 (3) UPDATE Разговор SET Код_Города=0 WHERE Код_Города=(SELECT Код_Города       FROM deleted) 

 (4) UPDATE Разговор SET Код_Города=0 WHERE Код_Города= (SELECT Код_Города       FROM deleted    WHERE Город.Код_Города=deleted.Код_Города) 


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

Даны таблицы Книга и Автор. Создать триггер, обрабатывающий изменение количества книг в одной записи таблицы Книга. При этом в таблице Автор необходимо пересчитать общий тираж книг соответствующего автора.

CREATE TRIGGER trig_upd ON Книга FOR UPDATE AS

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


Ответ:

 (1) DECLARE @av_i INT, @av_d INT,       @k_i INT, @k_d INT SELECT @av_i=Код_Автора, @k_i=количество FROM inserted SELECT @av_d=Код_Автора, @k_d=количество FROM deleted UPDATE Автор SET тираж=тираж-@k_d WHERE Код_Автора=@av_d UPDATE Автор SET тираж=тираж+@k_i WHERE Код_Автора=@av_i 

 (2) UPDATE Автор SET тираж= тираж-deleted.Количество+inserted.Количество WHERE Код_Автора=inserted.Код_Автора 

 (3) UPDATE Автор SET тираж=тираж- deleted.Количество WHERE Код_Автора=deleted.Код_Автора UPDATE Автор SET тираж= тираж+ inserted.Количество WHERE Код_Автора=inserted.Код_автора 


Номер 2

Даны таблицы Рейс и Билет. Создать триггер, обрабатывающий изменение в одной записи номера рейса в таблице Билет. При этом в таблице Рейс необходимо пересчитать количество свободных мест (увеличить для прежнего рейса и уменьшить для нового значения номера рейса).

CREATE TRIGGER trig_upd ON Билет FOR UPDATE AS

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


Ответ:

 (1) DECLARE @r_i INT, @r_d INT SELECT @r_d=Номер_рейса FROM deleted SELECT @r_i=Номер_рейса FROM inserted UPDATE Рейс SET число_мест=число_мест+1 WHERE номер_рейса=@r_d UPDATE Рейс SET число_мест=число_мест-1 WHERE номер_рейса=@r_i  

 (2) UPDATE Рейс SET число_мест=число_мест+1 WHERE номер_рейса=deleted.номер_рейса UPDATE Рейс SET число_мест=число_мест-1 WHERE номер_рейса=inserted.номер_рейса  

 (3) UPDATE Рейс SET число_мест= число_мест+ deleted.число_мест-inserterd.число_мест WHERE номер_рейса=inserted.номер_рейса  

 (4) UPDATE Рейс SET число_мест=число_мест+1 WHERE Номер_рейса=(SELECT Номер_рейса       FROM deleted       WHERE Рейс.Номер_рейса=deleted.Номер_рейса) UPDATE Рейс SET число_мест=число_мест-1 WHERE Номер_рейса=(SELECT Номер_рейса       FROM inserted       WHERE Рейс.Номер_рейса=        inserted.Номер_рейса)  


Номер 3

Даны таблицы Блюдо и Компонент. Создать триггер, обрабатывающий изменение стоимости одного компонента в таблице Компонент. При этом в таблице Блюдо должна измениться стоимость соответствующего блюда.

CREATE TRIGGER trig_upd ON Компонент FOR UPDATE AS

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


Ответ:

 (1) DECLARE @b_i VARCHAR(20),@b_d VARCHAR(20),       @s_i MONEY,@s_d MONEY SELECT @b_i=Название_блюда, @s_i= Стоимость_компонента FROM inserted SELECT @b_d=Название_блюда, @s_d= Стоимость_компонента FROM deleted UPDATE Блюдо SET Стоимость_блюда= Стоимость_блюда-@s_d WHERE Название_блюда=@b_d UPDATE Блюдо SET Стоимость_блюда= Стоимость_блюда+@s_i WHERE Название_блюда=@b_i 

 (2) UPDATE Блюдо SET Стоимость_блюда= Стоимость_блюда-deleted.Стоимость_компонента WHERE Название_блюда=deleted.Название_блюда UPDATE Блюдо SET Стоимость_блюда=Стоимость_блюда+ inserted.Стоимость_компонента WHERE Название_блюда=inserted.Название_блюда 

 (3) UPDATE Блюдо SET Стоимость_блюда= Стоимость_блюда-deleted.Стоимость_компонента +inserted.Стоимость_компонента WHERE Название_блюда=inserted.Название_блюда 

 (4) UPDATE Блюдо SET Стоимость_блюда= Стоимость_блюда-(SELECT Стоимость_компонента       FROM deleted)    WHERE Название_блюда=(SELECT Название_блюда       FROM deleted) UPDATE Блюдо SET Стоимость_блюда= Стоимость_блюда+(SELECT Стоимость_клмпонента       FROM inserted)    WHERE Название_блюда=(SELECT Название_блюда       FROM inserted) 


Номер 4

Даны таблицы Город и Разговор. Создать триггер, обрабатывающий изменение продолжительности одного телефонного разговора. При этом в таблице Город должна измениться величина общей продолжительности связи (всех разговоров) с соответствующим городом.

CREATE TRIGGER trig_upd ON Разговор FOR UPDATE AS

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


Ответ:

 (1) DECLARE @c_i INT,@c_d INT,    @d_i INT,@d_d INT SELECT @c_i=Код_Города, @d_i=продолжительность FROM inserted SELECT @c_d=Код_Города, @d_d=продолжительность FROM deleted UPDATE Город SET длит_связи=длит_связи-@d_d WHERE Код_Города=@c_d UPDATE Город SET длит_связи=длит_связи+@d_i WHERE Код_Города=@c_i 

 (2) UPDATE Город SET длит_связи= длит_связи-deleted.продолжительность WHERE Код_Города=deleted.Код_Города UPDATE Город SET длит_связи= длит_связи+inserted.продолжительность WHERE Код_Города= inserted.Код_Города 

 (3) UPDATE Город SET длит_связи= длит_связи- (SELECT продолжительность       FROM deleted) WHERE Код_Города=deleted.Код_Города UPDATE Город SET длит_связи= длит_связи+ (SELECT продолжительность       FROM inserted) WHERE Код_Города=inserted.Код_Города 

 (4) UPDATE Город SET длит_связи=длит_связи- ( SELECT продолжительность       FROM deleted    WHERE Код_Города=deleted.Код_Города) UPDATE Город SET длит_связи=длит_связи+ ( SELECT продолжительность       FROM inserted    WHERE Код_Города=inserted.Код_Города) 


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

Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если количество экземпляров данной книги превышает 100.

CREATE TRIGGER trig_upd ON Книга INSTEAD OF UPDATE AS

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

DECLARE @kod INT,    @k INT,    @p MONEY SELECT @kod=Код_Книги, @k=количество, @p=цена FROM inserted IF @k>100    UPDATE Книга SET цена=@p    WHERE Код_Книги=@kod

Ответ:

 (1) IF (SELECT количество FROM inserted)>100    UPDATE Книга SET цена=( SELECT цена FROM inserted    WHERE Код_Книги=(SELECT Код_Книги FROM inserted) 

 (2) IF inserted.количество >100    UPDATE Книга SET цена=inserted.цена    WHERE Код_Книги=inserted.Код_Книги 

 (3) IF EXISTS ( SELECT * FROM inserted WHERE количество >100)    UPDATE Книга SET цена=inserted.цена    WHERE Код_Книги=inserted.Код_Книги 


Номер 2

Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если на этот рейс продано не менее 20 билетов.

CREATE TRIGGER trig_upd ON Билет INSTEAD OF UPDATE AS

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


Ответ:

 (1) DECLARE @r INT, @m INT,       @k INT,       @s MONEY SELECT @r=номер_рейса, @s=стоимость, @m=номер_места FROM inserted SELECT @k=COUNT(номер_места) FROM Билет GROUP BY номер_рейса HAVING номер_рейса=@r IF @k>20    UPDATE Билет SET стоимость=@s    WHERE номер_места=@m 

 (2) IF (SELECT COUNT(номер_места) FROM Билет GROUP BY номер_рейса)>20    UPDATE Билет SET стоимость=( SELECT стоимость FROM inserted    WHERE номер_места=( SELECT номер_места FROM inserted)) 

 (3) IF COUNT(inserted.номер_места)>20    UPDATE Билет SET стоимость=inserted.стоимость    WHERE номер_места=inserted.номер_места 

 (4) IF (SELECT COUNT(номер_места) FROM Билет GROUP BY номер_рейса)>20 UPDATE Билет SET стоимость=inserted.стоимость WHERE номер_места=inserted.номер_места 


Номер 3

Дана таблица Компонент. Разработать триггер, выполняющийся вместо изменения калорийности одного компонента. Выполнить изменение калорийности только в том случае, если общая калорийность блюда, в состав которого входит изменяемый компонент, не превышает 400 ккал.

CREATE TRIGGER trig_upd ON Компонент INSTEAD OF UPDATE AS

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


Ответ:

 (1) DECLARE @n VARCHAR(20),       @b VARCHAR(20),       @k INT, @sk INT SELECT @n=название_компонента, @b=Название_блюда, @k=калорийность FROM inserted SELECT @sk=SUM(калорийность) FROM Компонент GROUP BY Название_блюда HAVING Название_блюда=@b IF @sk<=400    UPDATE Компонент SET калорийность=@k    WHERE название_компонента=@n 

 (2) IF SUM(inserted.калорийность)<=400    UPDATE Компонент SET калорийность=inserted.калорийность    WHERE название_компонента= inserted.название_компонента 

 (3) IF (SELECT SUM(калорийность) FROM Компонент GROUP BY Название_блюда)<=400    UPDATE Компонент SET калорийность=inserted.калорийность    WHERE название_компонента= inserted.название_компонента 


Номер 4

Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только в том случае, если общая продолжительность телефонных соединений абонента, в разговоре которого меняется продолжительность, не превышает 300 мин.

CREATE TRIGGER trig_upd ON Разговор INSTEAD OF UPDATE AS

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


Ответ:

 (1) DECLARE @f VARCHAR(20),       @d INT,@sd INT,       @k INT SELECT @k=Код_Разговора,@f=фамилия, @d=продолжительность FROM inserted SELECT @sd=SUM(продолжительность) FROM Разговор GROUP BY Фамилия HAVING фамилия=@f IF @sd<=300    UPDATE Разговор SET продолжительность=@d    WHERE Код_Разговора=@k 

 (2) IF (SELECT SUM(продолжительность) FROM Разговор, inserted GROUP BY Фамилия    HAVING фамилия=inserted.фамилия) <=300    UPDATE Разговор SET продолжительность=(SELECT продолжительность          FROM inserted)    WHERE Код_Разговора=( SELECT Код_Разговора FROM inserted) 

 (3) IF SUM(inserted.продолжительность       WHERE фамилия=inserted.фамилия )<=300    UPDATE Разговор SET продолжительность= inserted.продолжительность    WHERE Код_Разговора=inserted.Код_Разговора 

 (4) IF (SELECT SUM(продолжительность) FROM Разговор) <=300    UPDATE Разговор SET продолжительность=(SELECT продолжительность          FROM inserted)    WHERE Код_Разговора=( SELECT Код_Разговора FROM inserted) 


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

Даны таблицы Книга и Автор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором авторе из таблицы Автор. При этом необходимо запретить удаление, если общий тираж упомянутого автора больше 1000 экземпляров.

CREATE TRIGGER trig_del ON Автор FOR DELETE AS

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


Ответ:

 (1) DECLARE @av INT SELECT @av=Код_Автора FROM deleted IF EXISTS (SELECT Книга.Код_Автора       FROM Книга       GROUP BY Книга.Код_Автора       HAVING Книга.Код_Автора=@av AND Sum(Книга.Количество)>1000) ROLLBACK TRAN 

 (2) IF EXISTS (SELECT Книга.Код_Автора       FROM Книга       WHERE Код_Автора=deleted.Код_Автора AND Sum(Книга.Количество)>1000) ROLLBACK TRAN 

 (3) IF EXISTS (SELECT Код_Автора       FROM Книга       WHERE Sum(Книга.Количество)>1000) ROLLBACK TRAN 

 (4) IF EXISTS (SELECT Код_Автора     FROM Книга     WHERE Книга.Код_Автора=deleted.Код_Автора AND             Sum(Книга.Количество)>1000) ROLLBACK TRAN 


Номер 2

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

CREATE TRIGGER trig_del ON Рейс FOR DELETE AS

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


Ответ:

 (1) DECLARE @r INT SELECT @r=Номер_рейса FROM deleted UPDATE Билет SET номер_рейса=111 WHERE Номер_рейса=@r 

 (2) UPDATE Билет SET номер_рейса=111 WHERE Номер_рейса=deleted.Номер_рейса 

 (3) UPDATE Билет SET номер_рейса=111 WHERE Номер_рейса=(SELECT Номер_рейса       FROM deleted) 

 (4) UPDATE Билет SET номер_рейса=111 WHERE Номер_рейса=(SELECT Номер_рейса       FROM deleted       WHERE Билет.Номер_рейса=deleted.Номер_рейса) 


Номер 3

Даны таблицы Город и Разговор. Пусть они не связаны внешним ключом. Для обеспечения целостности данных создать триггер, обрабатывающий удаление информации о некотором городе из таблицы Город. При этом в таблице Разговор необходимо также удалить записи обо всех телефонных разговорах с удаленным городом.

CREATE TRIGGER trig_del ON Город FOR DELETE AS

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


Ответ:

 (1) DECLARE @c INT SELECT @c=Код_Города FROM deleted DELETE FROM Разговор WHERE Код_Города=@c 

 (2) DELETE FROM Разговор WHERE Код_Города=deleted.Код_Города 

 (3) DELETE FROM Разговор WHERE Код_Города=(SELECT Код_Города       FROM deleted) 

 (4) DELETE FROM Разговор WHERE Код_Города= (SELECT Код_Города       FROM deleted    WHERE Город.Код_Города=deleted.кодГорода) 


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

Дана таблица Книга. Разработать триггер, который выполняется вместо изменения цены одной книги в этой таблице. Изменение цены выполнить только в том случае, если книга издается в издательстве ‘Мир’.

CREATE TRIGGER trig_upd ON Книга INSTEAD OF UPDATE AS

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


Ответ:

 (1) DECLARE @kod INT,       @k VARCHAR(20),       @p MONEY SELECT @kod=Код_Книги, @k=издательство, @p=цена FROM inserted IF @k='Мир'    UPDATE Книга SET цена=@p    WHERE Код_Книги=@kod 

 (2) IF EXISTS(SELECT издательство FROM inserted WHERE издательство='Мир')    UPDATE Книга SET цена=( SELECT цена FROM inserted    WHERE Код_Книги=(SELECT Код_Книги FROM inserted)) 

 (3) IF inserted.издательство='Мир'    UPDATE Книга SET цена=inserted.цена    WHERE Код_Книги=inserted.Код_Книги 

 (4) IF EXISTS (SELECT * FROM inserted WHERE издательство='Мир')    UPDATE Книга SET цена=inserted.цена    WHERE Код_Книги=inserted.Код_Книги 


Номер 2

Дана таблица Билет. Разработать триггер, который выполняется вместо изменения стоимости одного билета. Изменение стоимости билета выполнить только в том случае, если этот рейс отправляется в Москву.

CREATE TRIGGER trig_upd ON Билет INSTEAD OF UPDATE AS

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


Ответ:

 (1) DECLARE @r INT, @m INT,       @c VARCHAR(20),       @s MONEY SELECT @r=номер_рейса, @s=стоимость, @m=номер_места FROM inserted SELECT @c=Рейс.Конечный_пункт FROM Рейс WHERE Рейс.Номер_рейса=@r IF @c='Москва'    UPDATE Билет SET стоимость=@s    WHERE номер_места=@m AND Номер_рейса=@r 

 (2) DECLARE @r INT, @m INT,       @c VARCHAR(20),       @s MONEY SELECT @r=номер_рейса, @s=стоимость, @m=номер_места FROM inserted IF (SELECT Рейс.Конечный_пункт FROM Рейс WHERE Рейс.номер_рейса=@r AND Рейс.Конечный_пункт='Москва')    UPDATE Билет SET стоимость=@s    WHERE номер_места=@m AND Номер_рейса=@r 

 (3) DECLARE @r INT, @m INT,       @c VARCHAR(20),       @s MONEY SELECT @r=номер_рейса, @s=стоимость, @m=номер_места FROM inserted    UPDATE Билет SET стоимость=@s    WHERE номер_места=@m AND Номер_рейса=@r AND Рейс.Конечный_пункт='Москва' 

 (4) DECLARE @r INT, @m INT,       @c VARCHAR(20),       @s MONEY SELECT @r=номер_рейса, @s=стоимость, @m=номер_места FROM inserted IF Рейс.Конечный_пункт='Москва'    UPDATE Билет SET стоимость=@s    WHERE номер_места=@m AND Номер_рейса=@r 


Номер 3

Дана таблица Разговор. Разработать триггер, который выполняется вместо изменения продолжительности одного разговора. Выполнить изменение продолжительности только для тех абонентов, которые говорили с Москвой.

CREATE TRIGGER trig_upd ON Разговор INSTEAD OF UPDATE AS

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


Ответ:

 (1) DECLARE @n VARCHAR(20), @f VARCHAR(20),       @d INT, @sd INT,       @k INT, @kod INT SELECT @k=Код_Разговора,@f=фамилия, @d=продолжительность, @kod=Код_Города FROM inserted SELECT @n=Город.Название FROM Город WHERE Город.Код_Города=@kod IF @n='Москва'    UPDATE Разговор SET продолжительность=@d    WHERE Код_Разговора=@k 

 (2) DECLARE @n VARCHAR(20), @f VARCHAR(20),       @d INT,@sd INT,       @k INT, @kod INT SELECT @k=Код_Разговора,@f=фамилия, @d=продолжительность, @kod=Код_Города FROM inserted IF Город.Название ='Москва'    UPDATE Разговор SET продолжительность=@d    WHERE Код_Разговора=@k 

 (3) DECLARE @n VARCHAR(20),       @d INT,@sd INT,       @k INT, @kod INT SELECT @k=Код_Разговора,@f=фамилия, @d=продолжительность, @kod=Код_Города FROM inserted SELECT @n=Город.Название FROM Город WHERE Город.Код_Города=@kod IF (SELECT Город.Название FROM Город WHERE Город.Код_Города=@kod AND Город.Название ='Москва')    UPDATE Разговор SET продолжительность=@d    WHERE Код_Разговора=@k 

 (4) DECLARE @n VARCHAR(20), @f VARCHAR(20),       @d INT,@sd INT,       @k INT, @kod INT SELECT @k=Код_Разговора,@f=фамилия, @d=продолжительность, @kod=Код_Города FROM inserted    UPDATE Разговор SET продолжительность=@d    WHERE Код_Разговора=@k AND Город.Название='Москва' 




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