"D:\Replicator_1_beta\Client\TEMPLATE.GDB" Previous topic Chapter index Next topic

BD_MASTER

 

 

Descriptions

There is no desription for trigger BD_MASTER

 

Definition


CREATE TRIGGER BD_MASTER FOR MASTER ACTIVE
BEFORE DELETE POSITION 32767
AS
DECLARE VARIABLE CURR_DB_ID INTEGER;
DECLARE VARIABLE REPL_COUNT INTEGER;
BEGIN
  /*Описание.
  Если не в режиме репликации:
      при попытке удаления ÷ужих записей (созданных другой БД),
      возбуждает исклю÷ение E_ACCESS_ERROR.
  Всегда устнавливает поколение изменения/удаления
      в соответствующей записи таблицы LOG_XXXX в NULL
     (поколение записи с÷итается неустановленным, поколение установит процедура SET_NEW_GEN).
  */

  SELECT DB_ID FROM CURR_DB_ID INTO :CURR_DB_ID;/*Полу÷ить ID текущей БД*/
  /**/
  /*Полу÷ить кол-во серверов с которыми происходит репликация (в текущей транзакции)*/
  SELECT COUNT( DB_ID ) FROM CURR_SERV INTO :REPL_COUNT;
  /*Если REPL_COUNT = 0, зна÷ит транзакция не в состоянии репликации. Можно удалять только записи принадлежащие текущей БД.
  Если REPL_COUNT = 1, зна÷ит транзакция в состоянии репликации. Предполагается, ÷то изменение производит процедура репликации.
  Если REPL_COUNT > 1, зна÷ит произошла внутрення ошибка (напр. таблица CURR_SERV не была о÷ищена после предыдущей репликации)*/
  IF( REPL_COUNT = 0 )THEN
    BEGIN
      IF( OLD.DB_ID <> CURR_DB_ID )THEN EXCEPTION E_ACCESS_ERROR;/*Попытка удаления ÷ужой записи не в состоянии репликации*/
    END
  ELSE
    IF( REPL_COUNT <> 1 )THEN EXCEPTION EINTERNAL_MULTIPLE_REPL;/*ASSERT(DEBUG)*/
  /*
  В таблице регистрации пометить запись как удал¸нную (признак изменения (LOG_UPD_GEN) устанавливается в NULL, признак удал¸нности вы÷исляется)*/
  UPDATE LOG_MASTER
    SET   LOG_UPD_GEN = NULL
    WHERE
          LOG_GID = OLD.GID
      AND LOG_UPD_GEN IS NOT NULL;/*Доп. условие, ÷то бы избежать конфликта блокировок к процедурой SET_NEW_GEN*/
END

    This file was generated with EMS InterBase/FireBird Manager (www.ibmanager.com) at 11/13/2006 10:51 PM Previous topic Chapter index Next topic

 

Хостинг от uCoz