Главная / Базы данных /
Основы 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
Город.Название='Москва'