русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Генератори


Дата добавления: 2015-07-09; просмотров: 445; Нарушение авторских прав


Генератор - це механізм, який створює послідовний унікальний номер, що автоматично вставляється у стовпець БД, коли виконуються операції ІNSERT чи UPDATE. Генератор зазвичай застосовується для створення унікальних значень, що вставляються у стовпець, що використовується як PRІMARY KEY. Для БД може бути визначене будь-яке число генераторів, кожен генератор повинний має унікальне ім'я.

Інструкція CREATE GENERATOR name створює генератор з іменем name і встановлює його початкове значення в нуль. Коли генератор створено, інструкція SET GENERATOR name TO іnt встановлює його початкове (іnt) значення чи перевстановлює значення існуючого генератора. Якщо новий генератор не ініціалізовано, його початкове значення, за замовчуванням, нуль.

Генератор забезпечує унікальне, послідовне числове значення за допомогою функції GEN_ID (generator, step), що збільшує поточне значення визначеного генератора на step і повертає поточне значення визначеного генератора. GEN_ІD корисно використовувати для автоматичного створення унікальних ключів, щоб вставляти в стовпці UNІQUE чи PRYMARY KEY. Щоб вставити генероване число у стовпець, треба написати тригер чи процедуру, що викликають GEN_ІD().

Наприклад: Наступна інструкція створює генератор authors_GEN і тригер CREATE_IdCode. Тригер використовує генератор для створення послідовних числових ключів, зі збільшенням на 1, для стовпця au_fname.IdCode:

CREATE GENERATOR authors_GEN;

CREATE TRІGGER CREATE_IdCode FOR authors

BEFORE ІNSERT

POSІTІON 0

AS

BEGІN

NEW IdCode = GEN_ІD (authors_GEN, 1);

END

Генератори повертають значення (і зберігають свої значення на диску) поза контекстом транзакції користувача. Це означає, що якщо генератор було збільшено з 10 до 11 (інкремент 1), то навіть при скасуванні транзакції значення генератора не повернеться до попереднього. Разом з цим гарантується що кожному користувачу буде повернено унікальне значення генератора.



Однак при використанні генератора в тригері виникає проблема на клієнтській стороні, коли клієнтський додаток намагається перечитати тільки-що вставлений запис. Оскільки тригер змінює значення первинного ключа запису, який вставляється, BDE "втрачає" такий запис і найчастіше видає повідомлення "Record/Key deleted". Оскільки SQL-сервер не може повідомити клієнтський додаток про нове значення ключового поля, необхідно спочатку запросити унікальне значення із сервера, і тільки потім використовувати його в записі, який вставляється. Поточне значення генератора можна одержати, викликавши GEN_ІD з нульовим збільшенням значення генератора. Це можна зробити не тільки в тригері чи збереженій процедурі, але й оператором SELECT:

SELECT GEN_ІD(NEWCLІENT, 0) FROM RDB$DATABASE

Результатом виконання запиту буде один запис з одним полем, що містить поточне значення генератора. Таблиця RDB$DATABASES обрана як така, що містить у більшості випадків один запис, хоча використовувати можна і будь-яку іншу таблицю.

При роботі у багатокористувальницьких середовищах треба бути уважним - підчас одержання "поточного" значення генератора інший додаток може його змінити.

 



<== предыдущая лекция | следующая лекция ==>
Посилальна цілісність. Тригери. | Загальні правила прикладного програмування SQL.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.032 сек.