Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторна робота 13 Тригери Виконав студент групи СПс31 Підгайний Олександр Терно

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 11.11.2024

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ УКРАЇНИ

ТЕРНОПІЛЬСЬКИЙ ТЕХНІЧНИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

Факультет комп’ютерно – інформаційних систем та програмної інженерії

Кафедра програмної інженерії

Лабораторна робота № 13

Тригери

Виконав

студент групи СПс-31

Підгайний Олександр

Тернопіль – 2013

Мета роботи: Набути навичок по використанню різноманітних тригерів подій при роботі з СУБД

Завдання: Cтворити тригер контролю обмежень цілісності, виконати скрипти, підготовлені для перевірки тригера і зберегти протокол їх виконання. Вивести вміст таблиць, що показує дію тригерів.

Хід роботи

Проаналізувавши роботу своєї бази даних, було зроблени висновок, що необхідна деяка автоматизація. А саме, при добавленні, оновленні, або видалені товару із замовлення, була постійна необхідність вручну змінювати значення поля кінцевою вартості замовлення вручну. Для того щоб автоматизувати цей процес було вирішено написати для кожного типу товару, по 3 тригери:

  1.   FOR INSERTданий тригер спрацьовував би при добавленні товару до замовлення і автоматично сумував би значення вартості товару з вартістю замовлення;
  2.  FOR UPDATEданий тригер спрацьовував би при оновленні даних про товару і відповідно мінусував би старе значення вартості і сумував би нове значення;
  3.  FOR DELETE – даний тригер спрацьовував би при видаленні товару і відповідно мінусував значення вартості товару від значення замовлення;

Для того щоб створити новий тригер у Management Studio 2012 необхідно обрати потрібну таблицю, натиснути на папку Triggers і обрати пункт New Trigger… По замовчуванню це СУБД створює запит з насутпним кодом:

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:  <Author,,Name>

-- Create date: <Create Date,,>

-- Description: <Description,,>

-- =============================================

CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name> 

  ON  <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name> 

  AFTER <Data_Modification_Statements, , INSERT,DELETE,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

END

GO

В кінцевому результаті вийшло 3 наступних тригери:

Лістинг коду тригера [TRIGGER_MAGNETS_INSERT]:

USE [MDF]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER TRIGGER [dbo].[TRIGGER_MAGNETS_INSERT]

  ON  [dbo].[Magnets]

  FOR INSERT

AS 

BEGIN

DECLARE @ID INT;

DECLARE @VALUE INT;

select @ID = inserted.ID_Order from inserted

select @VALUE = inserted.Full_price from inserted

update [dbo].[Order] set Profit = Profit + @VALUE where ID_Order = @ID

END

Лістинг коду тригера [TRIGGER_MAGNETS_UPDATE]:

USE [MDF]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER TRIGGER [dbo].[TRIGGER_MAGNETS_UPDATE]

  ON  [dbo].[Magnets]

  FOR UPDATE

AS 

BEGIN

DECLARE @ID INT;

DECLARE @VALUE INT;

select @ID = deleted.ID_Order from deleted

select @VALUE = deleted.Full_price from deleted

update [dbo].[Order] set Profit = Profit - @VALUE where ID_Order = @ID

select @VALUE = inserted.Full_price from inserted

update [dbo].[Order] set Profit = Profit + @VALUE where ID_Order = @ID

END

Лістинг коду тригера [TRIGGER_MAGNETS_DELETE]:

USE [MDF]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER TRIGGER [dbo].[TRIGGER_MAGNET_DELETE]

  ON  [dbo].[Magnets]

  FOR DELETE

AS 

BEGIN

DECLARE @ID INT;

DECLARE @VALUE INT;

select @ID = deleted.ID_Order from deleted 

select @VALUE = deleted.Full_price from deleted

update [dbo].[Order] set Profit = Profit - @VALUE where ID_Order = @ID

END

Відповідні тригери з таким самим кодом були створенні для інших 5 таблиць із товарами, єдина різниця між ними в назві тригера(оскільки СУБД неможе містити тригери з одинаковими назвами) та в назві таблиці. Оскільк код фактично одинаковий, тесутвання будемо проводити лише з однією таблицею – [dbo].[Magnets].

Тестування даних тригерів будемо проводити за насутпним планом:

  1.  Обераємо будь яке замовлення і фіксуємо в ньому значення поля Profit;
  2.  Додаємо новий запис в таблиці зі значенням деякого замовлення;
  3.  Оновлюємо таблицю [dbo].[Orders], перевіряємо результат;
  4.  Редагуваємо той же запис в таблиці;
  5.  Оновлюємо таблицю [dbo].[Orders], перевіряємо результат;
  6.  Видаляємо той же запис;
  7.  Оновлюємо таблицю [dbo].[Orders], перевіряємо результат;

Обираємо замовлення під номером 22, в якому значення поля Profit рівне 0 (рис. 1).

Додамо запис в таблицю [dbo].[Magnets] з наступними значеннями полів (рис. 1):


Рисунок 1 – Новий запис в таблиці [dbo].[Magnets]

Після добавлення цього запису значення поля Profit в таблиці з відповідним замовленням збільшився на 1000 як і планувалось. Тепер змінимо в тому самому записі значення поля Full_price на 2000. Значення поля в таблиці з відповідним замовленням стало 2000 (рис. 2).

Рисунок 2 – Значення запису

Останній тест який необхідний це видалення. Видаливши останній запис, значення поля профіт повернулось на 0. Таблиця проведення тестування тригерів зображена в табиці 1.

Таблиця 1- Тесутвання тригерів

Назва тригера

Початкове значення

Очікуване значення

Отримане значення

Статус

TRIGGER_MAGNETS_INSERT

0

1000

1000

Успішно

TRIGGER_MAGNETS_UPDATE

1000

2000

2000

Успішно

TRIGGER_MAGNETS_DELETE

2000

0

0

Успішно

 

Тестування пройшло успішно.

Висновок: Результатом виконання даної лабораторної роботи є 3 протестованих робочих тригери. Під час виконання даної лабораторної роботи було проаналізовано саму сутність тригерів та важливість їх використання, оскліьки в деяких випадках вони можуть сильно спростити і полегшити процес розробки. Також було вивчино синтаксис та прицнипи написання тригерів для різних подій: INSERT, UPDATE, DELETE.




1. на тему Государственные внебюджетные фонды- состав структура направление развития Выполнила с.html
2. История кооперации
3. Тема- Отраслевые особенности промышленности и их влияние на организацию учета Классификация отрасл
4. Разработка и эксплуатация автоматизированных информационных систе
5. х годов и двух мировых войн произошел своего рода естественный отбор компаний
6. Неэмиссионые ценные бумаги
7. ДАТЧИКИ-РЕЛЕ КОНТРОЛЯ ПЛАМЕНИ ОПТИЧЕСКИЕ
8. заменяем своими данными в таком же порядке.1
9.  БЫЛ У НЕЕ ЦАРЕВИЧ ПО ИМЕНИ ВАНЬКА ВЯЛЫЙЛЮБИЛ ВАНЬКА ЦАРЕВНЕ ПАЛОЧКУ КИНУТЬ ДА В ВАТРУЖКУ ЗАДВИНУТЬ ДА ПОД
10. тематики я старался не осмеивать человеческие поступки не огорчаться ими и не клясть их а понимать
11. Методические рекомендации При подготовке первого вопроса вспомните какие народы населяли Европу в средни
12. Посвящение в студенты Именно с сегодняшнего дня вы официально становитесь частью нашей дружной и большой се
13. Экономика и Есеп факультетіні~ деканы д
14. 12 Эмпирические и экспериментальные подходы в психоанализе
15. МИСиС Национальный Исследовательский Технический Университет 3 курс Коньково
16. Ценообразование и ценовая политика предприятия
17. Понятие и виды акционерных обществ
18. Ресемантизация собственных имен в арго
19. Экологическое право как отрасль права, наука и учебная дисциплина
20. Реферат Основные методики занятий физкультурными упражнениями