
- •Поняття транзакції та блокування.
- •Правила acid. Атомарність, узгодженість, ізольованість, стійкість.
- •Типи неузгодженості даних при відсутності блокувань
- •Рівні блокувань за стандартом ansi (чотири).
- •Типи транзакцій. Явні, неявні та автоматичні транзакції.
- •Типи транзакцій. Розподілені транзакції.
- •Початок, завершення та відкат транзакції. Точка зберігання. (23)
- •Керування блокуваннями. Менеджер блокувань. Час очікування.
- •Рівні блокувань
- •Рівні ізоляції.
- •Типи блокувань
- •Мертві блокування.
- •Збережені процедури. Доцільність використання. Типи збережених процедур.
- •Етапи розробки збережених процедур.
- •Синтаксис створення, зміни, видалення та виклику збережених процедур
- •Використання параметрів у збережених процедурах.
- •Тригери. Застосування тригерів.
- •Функції columnsupdated() та update () у тілі тригера.
- •Створення, зміна та видалення тригеру.
- •Керування транзакціями в тілі тригера. Фіксація та відкат змін користувача.(7)
Збережені процедури. Доцільність використання. Типи збережених процедур.
Етапи розробки збережених процедур.
Збережені процедури мають дуже багато спільного зі звичайними процедурами, широко використовуються в різних мовах програмування.Зокрема, це стосується процесу створення збережених процедур. Створенню процедури передує етап попередньої роботи, в ході якої необхідно знайти відповіді на наступні питання: 1. Визначення типу створюваної збереженої процедури. Крім тих процедур, що створює користувач в контексті власної бази даних, існує також можливість створювати системні і тимчасові процедури. З точки зору написання коду, ці процедури мало відрізняються один від одного. Різниця полягає в організації способу зберігання процедури. Щоб створити системну процедуру, необхідно дати їй назву, що починається з префікса sp_, і зберегти її в системній базі даних master. Тимчасові процедури доступні користувачам протягом того часу, поки активно з'єднання, в контексті якого ця процедура була створена. При визначенні процедури такого типу необхідно дати їй ім'я, яке починається із символу #. Ім'я глобальної тимчасової процедури починається з символів # #.
2. Запланувати права доступу до з.п 3. Визначення вхідних і вихідних параметрів процедури. SQL Server дозволяє визначити для однієї процедури до 1024 параметрів.Отримані процедурою параметри можуть використовуватися як звичайні змінні T-SQL, беручи участь у різноманітних операціях нарівні з іншими змінними.Після закінчення виконання коду збереженої процедури ви можете передати деякі отримані дані, використовуючи вихідні параметри. 3. Розробка коду збереженої процедури. Код процедури може містити послідовність будь-яких команд T-SQL, включаючи виклик інших процедур. Необхідно, однак, щоб код реалізовував логічно закінчену дію.
Синтаксис створення, зміни, видалення та виклику збережених процедур
Використання параметрів у збережених процедурах.
Давайте подивимося, як можна передавати в збережену процедуру параметри.
CREATE PROCEDURE proc1 (): порожній список параметрів
CREATE PROCEDURE proc1 (IN varname DATA-TYPE): один вхідний параметр. Слово IN необов'язково, тому що параметри за замовчуванням - IN (вхідні).
CREATE PROCEDURE proc1 (OUT varname DATA-TYPE): один повертається параметр.
CREATE PROCEDURE proc1 (INOUT varname DATA-TYPE): один параметр, одночасно входить і повертається.
Природно, ви можете задавати декілька параметрів різних типів.
Приклад параметра IN
1 3 4 5 6 |
DELIMITER // CREATE PROCEDURE `proc_IN` (IN var1 INT) BEGIN SELECT var1 + 2 AS result; END// |
Приклад параметра OUT
1 2 3 4 5 6 |
DELIMITER // CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100)) BEGIN SET var1 = 'This is a test'; END // |
Приклад параметра INOUT
1 2 3 4 5 6 |
DELIMITER // CREATE PROCEDURE `proc_INOUT` (OUT var1 INT) BEGIN SET var1 = var1 * 2; END // |
Повернення даних із збережених процедур.
Параметр типу курсор у збережених процедурах. Використання коду повернення.
Тригери. Застосування тригерів.
Класифікація тригерів за типами команд та за типом поведінки.
Тригер (trigger) SQL Server 2000 - це спеціальний тип збережених процедур, запускаються сервером автоматично при виконанні тих чи інших дій з даними таблиці. Тригери розрізняються за типом команд, на які вони реагують. Існують три типи тригерів. - INSERT TRIGGER. Тригери цього типу запускаються при спробі вставки даних з помощьюкоманди INSERT; - UPDATE TRIGGER. Тригери цього типу запускаються при спробі зміни даних з помощьюкоманди UPDATE; - DELETE TRIGGER. Тригери цього типу запускаються при спробі перемістити дані помощьюкоманди DELETE. Крім класифікації тригерів за типом зміни даних у таблиці, вони ж класифікуються за типом поведінки. У SQL Server 2000 існують два параметри, визначають поведінку тригерів. - AFTER. Тригер виконується після успішного виконання команди, що змінює дані в таблиці. Якщо ж команда з яких-небудь причин не може бути успішно завершена, то тригер також не виконується. Однак слід зазначити, що зміни даних в результаті виконання запиту користувача і виконання тригера здійснюється в тілі однієї транзакції. Тобто якщо відбудеться відкат тригера (у ньому буде виконана команда ROLLBACK TRAN), то також будуть відвалений і зміни користувача. Тригери типу AFTER неможливо визначити для уявлень. Вони можуть бути визначені тільки для таблиць. Для кожної таблиці можна визначити більше одного тригера AFTER для кожної операції (INSERT, UPDATE, DELETE). Якщо ви передбачили для таблиці виконання декількох тригерів AFTER, то за допомогою системної процедури sp_settriggerorder можливо вказати, який тригер буде виконуватися першим, а який останнім. Проте призначити тригер, який буде виконуватися другим, третім і т. д. (але не останнім), на жаль, не можна; - INSTEAD OF. У цьому випадку тригер викликається замість команд, призначених для запуску тригера. Тригери INSTEAD OF можуть бути визначені для таблиць і уявлень. Ви зможете визначити тільки один тригер INSTEAD OF для кожної операції (INSERT, UPDATE, DELETE).