Двухфазное подтверждение транзакций
В случае двухфазных транзакций триггеры на событие TRANSACTION START
срабатывают в фазе подготовки (prepare), а не в фазе commit.
В случае двухфазных транзакций триггеры на событие TRANSACTION START
срабатывают в фазе подготовки (prepare), а не в фазе commit.
Триггеры для событий базы данных DISCONNECT
и ROLLBACK
не будут вызваны при отключении клиентов через таблицы мониторинга (DELETE FROM MON$ATTACHMENTS
).
Использование оператора IN AUTONOMOUS TRANSACTION DO
в триггерах на событие базы данных связанные с транзакциями (COMMIT
, ROLLBACK
, START
) может привести к его зацикливанию.
Триггеры для событий базы данных могут создать:
Владелец базы данных;
Пользователи с привилегией ALTER DATABASE
.
CREATE TRIGGER tr_log_connect
INACTIVE ON CONNECT POSITION 0
AS
BEGIN
INSERT INTO LOG_CONNECT (ID,
USERNAME,
ATIME)
VALUES (NEXT VALUE FOR SEQ_LOG_CONNECT,
CURRENT_USER,
CURRENT_TIMESTAMP);
END
CREATE EXCEPTION E_INCORRECT_WORKTIME 'Рабочий день ещё не начался';
CREATE TRIGGER TR_LIMIT_WORKTIME ACTIVE
ON CONNECT POSITION 1
AS
BEGIN
IF ((CURRENT_USER <> 'SYSDBA') AND
NOT (CURRENT_TIME BETWEEN time '9:00' AND time '17:00')) THEN
EXCEPTION E_INCORRECT_WORKTIME;
END