Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / ЛЕКЦІЯ 14.ppt
Скачиваний:
30
Добавлен:
30.05.2020
Размер:
128 Кб
Скачать

При продажу або отриманні товару необхідно відповідним чином змінити кількість його складського запасу. Якщо товару на складі ще немає, необхідно додати відповідний запис в таблицю Склад. Тригер обробляє тільки один рядок, що додається.

ALTER TRIGGER Триггер_ins

відповідний запис в таблицю Склад

ON Операція FOR INSERT

IF NOT EXISTS (SELECT *

AS

FROM Склад С, inserted i

DECLARE @x INT @y INT

WHERE С.КодТовара=i.КодТовара)

IF @@ROWCOUNT=1

INSERT INTO Склад (КодТовара,Залишок)

//--в таблицю Операція додається запис про

ELSE

поставку товару

//--якщо запис про товар вже був в таблиці Склад, то

BEGIN

визначається код і кількість товару з доданої в

//--кількість проданого товару повинна бути не

таблицю Операція запису

менше ніж його залишок з таблиці Склад

BEGIN

IF NOT EXISTS(SELECT *

SELECT @y=i.КодТовара @x=i.Кількість

FROM inserted

FROM Операція З, inserted i

WHERE -inserted.Кількість< =ALL(SELECT

WHERE С.КодТовара=i.КодТовара

Склад.Залишок

//--і проводиться зміни кількості товару в Таблиці

FROM Склад, Операція

Склад

WHERE Склад.КодТовара = Операція.КодТовара))

UPDATE Склад

BEGIN

SET Залишок=Залишок+@x

ROLLBACK TRAN

WHERE КодТовара=@y

PRINT 'відкат - товару немає '

END

END

END

//--якщо запису про поставлений товар ще немає

 

додається

 

Для товару, код якого вказаний при видаленні запису, необхідно відкоректувати його залишок на складі. Тригер обробляє тільки один запис, що

видаляється

CREATE TRIGGER Триггер_del ON Операція FOR DELETE AS

IF @@ROWCOUNT=1 //-- видалений один запис BEGIN

DECLARE @y INT,@x INT

//--визначається код і кількість товару з видаленої з таблиці Склад запису SELECT @y=КодТовара @x=Кількість

FROM deleted

//--в таблиці Склад коректується кількість Товару UPDATE Склад

SET Залишок=Залишок-@x WHERE КодТовара=@y END

Соседние файлы в папке лекции