Використання post_event

Використання post_event

Розглянуто питання, необхідні розробнику для створення клієнт-серверних додатків з використанням СУБД Firebird, що стала розвитком СУБД Borland Interbase 6. Утримується огляд концепцій і моделей архітектури клієнт / сервер, а також практичні рекомендації по роботі з клієнтськими бібліотеками Firebird. Детально описані особливості типів даних SQL, мова маніпулювання даними (Data Manipulation Language, DML), а також синтаксис і оператори мови визначення даних (Data Definition Language, DDL). Велика увага приділена опису транзакцій і наведено поради щодо їх використання при розробці додатків. Описано програмування на стороні клієнта і сервера написання тригерів і збережених процедур, створення і використання подій бази даних, обробка помилок в коді на сервері і багато іншого. Матеріал супроводжується численними прикладами, порадами та практичними рекомендаціями.

Для розробників баз даних

Книга: Firebird КЕРІВНИЦТВО РОЗРОБНИКА БАЗ ДАНИХ

Використання POST_EVENT

Розділи на цій сторінці:

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

параметр <имя-события> може бути або літералом в лапках, або строкової змінної. Він є чутливим до регістру і може починатися з цифри. Імена подій обмежуються 64 символами.

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

В альтернативному варіанті, при використанні змінної для імені події можна одним оператором посилати різні події відповідно до поточним значенням строкової змінної (наприклад, event_name).

POST EVENT event name;

ПРИМІТКА. Хоча POST_EVENT і є оператором SQL, його аргумент ім'я події не повинен мати префікс двокрапки.

Тригер або збережена процедура, які посилають повідомлення, іноді називаються обработчиками повідомлень [129]. Наступний скрипт створює тригер, який посилає подія менеджеру подій, коли будь-який додаток додає в таблицю дані:

CREATE TRIGGER POST_NEW_ORDER FOR SALES ACTIVE AFTER INSERT POSITION 0

POST_EVENT 'new_order'; END ^

Тригер або процедура?

Оператор POST EVENT доступний і в тригерах, і в збережених процедурах. Як же вирішити, де краще його помістити для посилки подій?

Емпіричним правилом є використання тригерів, коли додатків потрібно знати про події на рівні рядка - одного рядка або безлічі рядків, в залежності від області дії транзакції, - і процедур для сигналізації про такі події, які впливають на додатки в цілому.

Це тільки загальні міркування - часто процедури мають область дії на рівні рядка, і якщо зацікавлені клієнти хочуть знати, коли сталася конкретна операція, подія надсилається в такий збереженій процедурі. В цьому випадку POST_EVENT в тригері не матиме можливості нічого повідомити з додатками про контекст події. Розробник може використовувати події в процедурі, щоб встановити, яка програма відповідально за виконання відповідної роботи. В іншому варіанті розробник може помістити повідомлення про подію в тригер, щоб гарантувати, що конкретна дія DML інформуватиме всіх, незалежно від контексту, в якому воно виконується.

пора далі

Тепер ми звернемося до безпеки вашого мережевого оточення СУБД. У цій частині ми розглянемо ризики і заходи безпеки, пов'язані з виконанням ваших серверів баз даних Firebird. Для початку в наступному розділі обговорюються деякі слабкі місця в системі захисту операційного оточення і заходи, які ви можете прийняти щодо їх усунення.