КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Примеры. Содержимое таблиц inserted и deleted в зависимости от вида триггера
Содержимое таблиц INSERTED и DELETED в зависимости от вида триггера Алгоритм обработки триггеров Общий синтаксис создания триггера Виды триггеров Сравнение триггеров и хранимых процедур Лабораторная работа №8. Триггеры
CREATE TRIGGER <Имя_триггера> ON <Имя_таблицы_или_вида> {FOR|AFTER|INSTEAD OF} {[INSERT] [,] [UPDATE] [,] [DELETE]} AS <SQL-выражения, составляющие тело триггера>
Таблицы INSERTED и DELETED – виртуальные, существуют только в период выполнения триггера.
--6.1. Триггер на поддержание актуального количества товаров при добавлении поставок CREATE TRIGGER tr_supply_fi ON supply FOR INSERT AS UPDATE detail SET detail_quantity = d.detail_quantity + i.supply_quantity FROM detail d JOIN INSERTED i ON d.detail_id = i.detail_id
--6.2. Триггер на поддержание актуального количества товаров при удалении поставок CREATE TRIGGER tr_supply_fd ON supply AFTER DELETE AS UPDATE detail SET detail_quantity = detail.detail_quantity - DELETED.supply_quantity FROM detail JOIN DELETED ON detail.detail_id = DELETED.detail_id
--6.3. Триггер на поддержание актуального количества товаров при отпуске деталей в цеха CREATE TRIGGER tr_delivery_string_fi ON delivery_string FOR INSERT AS UPDATE detail SET detail_quantity = d.detail_quantity - i.delivery_quantity FROM detail d JOIN INSERTED i ON d.detail_id = i.detail_id
--6.4. Проверка допустимости значения даты поставки при добавлении новой поставки CREATE TRIGGER tr_supply_ii ON supply INSTEAD OF INSERT AS IF EXISTS (SELECT * FROM INSERTED WHERE supply_date > GETDATE()) BEGIN RAISERROR ('Недопустимое значение даты поставки!', 16, 1) ROLLBACK TRAN END ELSE INSERT INTO supply (supplier_id, detail_id, supply_date, supply_quantity) SELECT supplier_id, detail_id, supply_date, supply_quantity FROM INSERTED
--6.5. Проверка допустимости значения даты поставки при редактировании существующей поставки CREATE TRIGGER tr_supply_iu ON supply INSTEAD OF UPDATE AS IF UPDATE (supply_date) IF EXISTS (SELECT * FROM INSERTED WHERE supply_date > GETDATE()) BEGIN RAISERROR (' Недопустимое значение даты поставки!', 16, 1) ROLLBACK TRAN END ELSE UPDATE supply SET supplier_id = i.supplier_id, detail_id = i.detail_id, supply_date = i.supply_date, supply_quantity = i.supply_quantity FROM supply s JOIN INSERTED i on s.supply_id = i.supply_id
Дата добавления: 2015-05-10; Просмотров: 392; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |