Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба 7 / доп задание

.txt
Скачиваний:
14
Добавлен:
17.06.2021
Размер:
2.76 Кб
Скачать
-- создаем триггер на обновление таблицы клиент
-- если это обновление имени клиента то мы отменяет транзакцию
-- если ФИО руководителя то мы датц заказа ставим сегодня
-- если это інсерт то создадим новый заказ с этим коиентом

drop TRIGGER tr_ДОП

select * from Заказ

select * from Клиент --inner join Заказ on Заказ.КодКлиента = Клиент.КодКлиента

CREATE TRIGGER tr_ДОП
ON Клиент
FOR INSERT, UPDATE
AS
DECLARE @КодКлиента INT
IF EXISTS (select * from inserted Клиент) AND not EXISTS (select * from deleted Клиент)
begin
DECLARE myCursor CURSOR LOCAL STATIC
FOR
SELECT КодКлиента
FROM inserted Клиент
OPEN myCursor;
FETCH FIRST FROM myCursor INTO @КодКлиента;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO Заказ (КодКлиента, КодТовара, Количество, ДатаЗаказа, СрокПоставки, КодПоставщика)
VALUES (@КодКлиента, 111, 8, GETDATE(), GETDATE()+12, 123)
FETCH NEXT FROM myCursor INTO @КодКлиента;
END;
CLOSE myCursor;
DEALLOCATE myCursor;
end
else IF UPDATE(ФИОРуководителя)
begin
DECLARE myCursor CURSOR LOCAL STATIC
FOR
SELECT КодКлиента
FROM inserted Клиент
OPEN myCursor;
FETCH FIRST FROM myCursor INTO @КодКлиента;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Заказ
SET ДатаЗаказа = getdate()
from Клиент
inner join Заказ on Заказ.КодКлиента = Клиент.КодКлиента
WHERE Клиент.КодКлиента = @КодКлиента;
FETCH NEXT FROM myCursor INTO @КодКлиента;
END;
CLOSE myCursor;
DEALLOCATE myCursor;
end
else IF UPDATE(ИмяКлиента)
begin
DECLARE @ИмяКлиента varchar(30)
select @КодКлиента = КодКлиента,@ИмяКлиента = ИмяКлиента from deleted Клиент
update Клиент
set ИмяКлиента = @ИмяКлиента
where КодКлиента = @КодКлиента
end
GO

update Клиент set ФИОРуководителя = 'Мутный Тип2' where КодРегиона = 202

INSERT INTO Клиент (ИмяКлиента, ФИОРуководителя, КодРегиона)
VALUES ('Мутный Тип2', 'Неблагонадежный Иван Александрович', 202)
Соседние файлы в папке лаба 7