Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Method_ЛР_БД(1).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
921.09 Кб
Скачать

7.3 Завдання на лабораторну роботу

1.Створити процедури з параметром (параметрами) і без параметра.

2.Створити процедури, зв’язані з таблицею, за завданням викладача.

7.4 Методика виконання

Проходимо сесію. Тиснемо правою кнопкою на test3 і далі вибираємо Create new>Stored routine. У вікні Options заповнюємо вікна Name, Comment, Determenistic. Залишаємо як є інформацію в вікнах Type, Definer, Data Access, SQL Security.

У вікні Routine body в операторних дужках пишемо потрібні SQL-речення (завершуємо їх обов’язково ;). Тиснемо внизу Save, а справа внизу – Run routine(s)…

Якщо у процедурі потрібні параметр або параметри – тиснемо кнопку Parameters, потім – Add. Вводимо ім’я параметру (вікно Name), Datatype, вибираємо Context (IN, OUT або INOUT). Якщо є ще параметр – тиснемо Add, вводимо ім’я параметру (вікно Name), Datatype, вибираємо Context (IN, OUT або INOUT). Тиснемо Save.

Для виконання процедури тиснемо Run routine(s)… У вікні Parameter, що з’явилось, вводимо значення параметру, тиснемо кнопку ОК.

7.5 ЗМІСТ ЗВІТУ

Розділ “Результати роботи” повинен містити скрипти процедур і результати їх викликів.

7.6 Контрольні питання

    1. Напишіть скрипт процедури по завданню викладача.

    2. Як викликати процедуру?

3. Розкажіть про роботу процедури Вашої БД чи БД іншого студента.

Лабораторна робота №8 створення тригерів, подій

8.1 Мета роботи

1. Набуття навичок реалізації бізнес-правил

2. Підготовка до курсового проектування

8.2 Теоретичні відомості

У лабораторній роботі студенти вивчать роботу об’єктів БД TRIGGER і події EVENT (часового тригера або планувальника).

Синтаксис тригера:

CREATE

[DEFINER = {user | CURRENT_USER}]

TRIGGER trig_name

trig_time trig_event

ON tbl_name

FOR EACH ROW

trig_body

Синтаксис події:

CREATE EVENT [IF NOT EXISTS] event_name

ON SCHEDULE schedule

[ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE]

[COMMENT 'comment']

DO sql_statement;

schedule:

AT timestamp [+ INTERVAL interval]

| EVERY interval [STARTS timestamp]

[ENDS timestamp]

interval:

quantity {YEAR | QUARTER | MONTH | DAY | HOUR |

MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR |

DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

Інструкція створює і планує нову подію.

    1. 8.3 Завдання на лабораторну роботу

1. Створити тригер, спрямований на аудит – визначення імен користувачів, які проводили дії з таблицею, та дату вставки.

2. Створити тригер згідно варіанту (позначимо BEFORE як B, AFTER – A, INSERT – I, DELETE – D, UPDATE ­ U).

1

2

3

4

5

6

7

8

9

10

11

12

B

B

B

A

A

A

B

B

B

A

A

A

I

D

U

I

D

U

I

D

U

I

D

U

3. Створити подію на оновлення таблиці за завданням викладача.

8.4 Методика виконання

Техніка створення тригера подібна створенню процедури (лабораторна робота №7).

Для виконання п.1 завдання потрібно, наприклад, додати до БД log-таблицю, у яку вносити імена користувачів, що працювали з таблицею. Ім’я користувача отримаємо з допомогою вбудованої функції USER(), що повертає строку з ім’ям користувача.

Скрипт тригера, що частково виконує завдання:

CREATE TRIGGER `my_trigger`

BEFORE INSERT ON `table1`

FOR EACH ROW

INSERT INTO `mylog` SET `user`= USER(), `query`='insert';

Ще потрібно додати час вставки.

Для виконання п.3 завдання проходимо сесію. Тиснемо правою кнопкою на test3 і далі вибираємо Create new>Event. У вікно Name: вводимо ім’я події, залишаємо з «галочкою» віконце Drop event after expiration, у вікні Execution body: між операторними дужками BEGIN END вводимо текст Event. Тиснемо Save.

Наприклад, подія видалення всіх неактивних товарів

CREATE EVENT `delete_inactive`

ON SCHEDULE EVERY 1 DAY

DO

DELETE FROM `orders` WHERE `data_orrders` IS NUL;

За замовчуванням, планувальник відключений. Фіксуємо зміст таблиці. Включимо подію за допомогою запиту

SET GLOBAL event_scheduler = On;

Коли подія відбудеться, фіксуємо зміст таблиці.

8.5 ЗМІСТ ЗВІТУ

Розділ “Результати роботи” повинен містити скрипти тригерів, подій і результати їх роботи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]