Тригери в SQL

Часто виникає необхідність автоматично виконувати деякі типові процедури обробки даних при настанні деякої події в  базі даних. Для цього в СУБД Intebase передбачений механізм тригерів. По суті справи, тригери — це збережені процедури, які автоматично запускаються при настанні однієї з нижче перерахованих подій:

  1. BEFORE INSERT  - подія, яка виникає перед добпвлення нового запису до таблиці БД.
  2. BEFORE DELETE - подія, яка виникає перед видаленням запису з таблиці БД.
  3. BEFORE UPDATE - подія, яка виникає перед редагуванням запису в таблиці БД.
  4. AFTER INSERT - подія, яка виникає після добпвлення нового запису до таблиці БД.
  5. AFTER DELETE - подія, яка виникає після видаленням запису з таблиці БД.
  6. AFTER UPDATE - подія, яка виникає після редагуванням запису в таблиці БД.

На відміну від збережуваних процедур, тригер завжди прив'язаний до деякої таблиці БД. Тригер не має вхідних або вихідних параметрів.

Приклад: для таблиці Cars створимо тригер tcar_id, за допомогою якого в поле Kod вставляється значення генератора car_id.

Читати повністю

Створення та призначення генераторів в SQL

При роботі з реляційними базами даних рекомендується для кожної таблиці створювати первинний ключ — поле, значення якого є унікальним для кожного запису (можливий також випадок, коли первинний ключ складається з декількох полів таблиці, тоді унікальним повинен бути набір значень цих полів). В такому випадку виникає проблема, яким чином генерувати значення для первинного ключа, які б не повторювалися.

У деяких системах управління базами даних (СУБД) є спеціальні типи, які призначені для рішення даної проблеми. Вони зручні тим, що значення для них автоматично заповнюються системою управління БД при вставці нових записів в таблицю. Зазвичай це — цілі числа, значення яких збільшуються автоматично (наприклад, в MS Access такий тип називається типом «лічильник», в СУБД Paradox — тип «autoincremental»). У СУБД InterBase такого спеціального типу даних немає, замість цього пропонується особливий механізм використання генераторів.

Генератор в Interbase — це сукупність цілочисельної змінної, яка зберігається в базі даних, і механізму її автоматичного збільшення і використання значень цієї змінної для заповнення полів у таблицях БД.

Основне призначення генераторів — формувати неповторювані цілочисельні значення, які можна використовувати в якості значень для первинного ключа. Для створення генератора в  SQL існує команда:

Читати повністю

Видалення і добавлення нових полів у таблиці засобами SQL

Для того, щоб проводити будь-які зміни в таблиці бази даних існує оператор ALTER TABLE, який має наступний формат:

ALTER TABLE <Ім'я таблиці>
ADD <Ім'я поля> <Тип данихя>,
DROP <Ім'я поля>,
...................................................
ADD <Ім'я поля> <Тип данихя>,
DROP <Ім'я поля>;

Зауваження: при спробі видалити поле, якого не існує або при добавлення поля з іменем яке вже існує, винекне вийняткова ситуація.

Де оператор ADD добавляє нове поле в таблиці, ім'я і тип даних в яком задаються аналогічно, як і у операторі   CREATE TABLE; оператор DROP — видаляє поле із таблиці з заданим іменем.

Читати повністю

Використання вкладених запитів в SQL

Нехай нам потрібно з таблиці Cars вибрати автомобілі з типом кузова «Седан», значення id якого ми не знаємо. Одним із способів отримати даний результат — це послідовне виконання двох запитів. Спочатку запит до таблиці Body_Type, щоб з'ясувати значення поля id для типу кузова «Седан», а потім, сформувати другий запит, який буде вибирити із таблиці Cars автомобілі, у яких поле body_type_id дорівнює отриманому значенню.

Вкладені запитиВкладені запити

Можна скористатись другим способом і обійтись одним запитом, який містить вкладений запит:

SELECT Model, Year, Price
FROM Cars
WHERE body_type_id=( SELECT id FROM Body_Type WHERE body_type='Седан');

Читати повністю

SQL оператор Insert. Вставка нових записів у таблицю бази даних

Вставка записів здійснюється оператором INSERT, з допомогою якого до таблиці можна добавити одну або декілька записів. При добавленні одного запису оператор INSERT має наступний формат:

INSERT INTO <Ім'я таблиці> [<Список полів>] VALUES (<Список значень>);

Після виконання даної команди до таблиці, ім'я якої вказується після слова INTO додається один запис, для якого заповнюються поля, які містяться в списку. Значення полів буруться зі списку заданого після слова VALUES. Списки полів і списки значень повинні відповідати один одному за кількістю елементів і за типом. При присвоєнні даних для першого поля береться перше значення, для другого — друге і так далі. При цьому порядок полів і значень може відрізнятися від порядку полів у таблиці.

Приклад запиту на добавлення нових даних у таблицю Cars:

Оператор insert

INSERT INTO Cars (model, color, year, price, displacement, mileage) VALUES ('renault', 'Білий', '2005', 7500, '2.0I', '12 т.км');

Читати повністю

SQL оператор DELETE. Видалення даних з таблиці БД

Для видалення групи записів з таблиці бази даних використовується оператор DELETE, який має наступний формат:

DELETE FROM <Ім'я таблиці> [WHERE <Критерій відбору>];

Після виконання цього оператора з таблиці, ім'я якої вказано після слова FROM видаляються всі записи, які задовольняють критерію відбору.

Зауваження: якщо критерій відбору не задано, то з таблиці буде видалено всі дані.

Для прикладу розглянемо таблицю Cars

Оператор Delete

і спробуємо видалити з неї деякі записи з допомогою наступного sql запиту:

Читати повністю

SQL оператор UPDATE. Редагування записів в базі даних

Під редагування даних розуміють зміну значень полів у таблиці бази даних. Воно виконується оператором UPDATE, який має наступний формат:

UPDATE <Ім'я таблиці> SET <Ім'я поля> = <Значення>,..., <Ім'я поля> = <Значення> [ WHERE <Критерій відбору>];

Після виконання оператора UPDATE для всіх записів, які відповідають заданому критерію відбору, змінюється значення полів.

Розглянемо деяку таблицю Cars, яка містить інформацію про автомобілі:

Оператор update

В даній таблиці змінимо значення поля Model для рядка, значення поля Kod якого дорівнює одиниці. Для цього запишемо наступний SQL запит:

Читати повністю

« Попередня сторінкаНаступна сторінка »