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

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

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

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

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

CREATE GENERATOR <ім’я_генератора>

Крім того, після створення генератора виникає необхідність встановити для нього деяке початкове значення (якщо цього не зробити, то початковим значенням буде 0). Це можна зробити скориставшись командою:

SET GENERATOR <ім’я_генератора> TO <початкове_значення>

Приклад: для деякої таблиці Cars, яка містить інформацію про автомобілі створити генератор car_id і встановити для нього початкове значення. Для цього запишемо наступні два SQL оператори.

CREATE GENERATOR car_id;
SET GENERATOR car_id TO 10;

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

GEN_ID (<ім’я_генератора>, <крок>)

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

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

Створення генераторів в SQL

INSERT INTO Cars (Kod, Model, Color, Year, Price, Displacement, Mileage) VALUES (GEN_ID( car_id , 1) , ‘ BMW318’ , ‘Зелений’ , ‘2000’ , ‘15000 ‘ ,’ 1.8I’, ’50 т.км’);

При виконанні даної команди сервер СУБД збільшить поточний значення генератора car_id на 1 і отримане значення помістить у відповідне поле таблиці.

create_generator_sql2

Наприклад, якщо ще раз викликати INSERT в такому варіанті, значення генератора буде ще раз збільшено. Таким чином, поле первинного ключа буде заповнюватися гарантовано унікальними значеннями.

Видалення існуючого генератора здійснюється наступною командою:

DROP GENERATOR <ім’я_генератора>

Залишити коментар

Your email address will not be published. Required fields are marked *

*