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

Документ Microsoft Word (2)

.docx
Скачиваний:
12
Добавлен:
18.02.2017
Размер:
50.19 Кб
Скачать

Отчет к 4 лабораторной работе

Цель: создать триггеры и хранимые процедуры для текущей базы данных

Триггер — это хранимая процедура особого типа, вызываемая на выполнение в от­вет на определенные события.

В отличие от хранимых процедур, при использовании которых требуется их явный вызов на выполнение, триггеры вызываются на выполнение автоматически при обнаружении события (или событий), связанного с выполнением операций над таблицей, за которой закреплен триггер, например после слов UPDATE, INSERT, DELETE.

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

В качестве главной таблицы я выбрал таблицу Salary_Key, в качестве подчинённой таблицы – Salary_Citizen

Триггеры:

ALTER TRIGGER [dbo].[Salary_Del]

ON [dbo].[Salary_Citizen]

AFTER DELETE

AS BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for trigger here

UPDATE Salary_Key SET NORR=NORR-1 WHERE ID_Зарплата in (select ID_Зарплата FROM deleted)

END

ALTER TRIGGER [dbo].[Salary_Ins]

ON [dbo].[Salary_Citizen]

AFTER INSERT

AS BEGIN

--SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for trigger here

UPDATE Salary_Key SET NORR=NORR+1 WHERE ID_Зарплата in (select ID_Зарплата FROM inserted)

END

ALTER TRIGGER [dbo].[Salary_Upd]

ON [dbo].[Salary_Citizen]

AFTER UPDATE

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for trigger here

UPDATE Salary_Key SET NORR=NORR+1 WHERE ID_Зарплата in (select ID_Зарплата FROM inserted)

UPDATE Salary_Key SET NORR=NORR-1 WHERE ID_Зарплата in (select ID_Зарплата FROM deleted)

END

Хранимые процедуры:

ALTER proc [dbo].[pSalary_Citizen]

@ID_Житель int,

@ID_Зарплата int

as begin

set nocount on;

insert into Salary_Citizen(ID_Житель,ID_Зарплата)

values(@ID_Житель, @ID_Зарплата)

update Salary_Key set NORR=NORR+1 where ID_Зарплата=@ID_Зарплата

end

ALTER proc [dbo].[pSalary_Citizen1]

@ID_Житель int,

@ID_Зарплата int

as begin

set nocount on;

update Salary_Key set NORR=NORR-1 where ID_Зарплата=@ID_Зарплата

DELETE FROM Salary_Citizen WHERE (ID_Житель=@ID_Житель and ID_Зарплата=@ID_Зарплата)

end