Descriptions
There is no desription for trigger BD_DB_PROFILE
 
Definition
CREATE TRIGGER BD_DB_PROFILE FOR DB_PROFILE ACTIVE
BEFORE DELETE POSITION 32767
AS
DECLARE VARIABLE REPL_COUNT INTEGER;
DECLARE VARIABLE COUNT_IS_CURR INTEGER;
DECLARE VARIABLE COUNT_REF INTEGER;
BEGIN
/*Описание.
Если не в режиме репликации:
при попытке удаления ÷ужих БД(созданных другой БД),
возбуждает исклю÷ение E_ACCESS_ERROR.
Всегда устнавливает поколение изменения/удаления
в соответствующей записи таблицы LOG_DB_PROFILE в NULL
(поколение записи с÷итается неустановленным, поколение установит процедура SET_NEW_GEN);
если есть под÷ин¸нные записи, возбуждает исклю÷ение E_DB_HAS_REFS;
исклю÷ает запись об удаляемой БД из списка клиентов.
*/
SELECT COUNT( DB_ID ) FROM CURR_SERV INTO :REPL_COUNT;
/**/
IF( REPL_COUNT = 0 )THEN/*NOT IN RECEIVE*/
BEGIN
IF( OLD.IS_CURR <> 1 )THEN EXCEPTION E_ACCESS_ERROR;/*Можно удалить только текущую БД*/
END
ELSE
IF( REPL_COUNT <> 1 )THEN EXCEPTION EINTERNAL_MULTIPLE_REPL;/*ASSERT(DEBUG)*/
/*===============SCEMA SPECIFIC===========*/
/*Нельзя сделать вы÷ислимое поле DB_ID внешним клю÷¸м*/
SELECT COUNT( DB_ID ) FROM MASTER WHERE DB_ID = OLD.DB_ID INTO :COUNT_REF;
IF( COUNT_REF <> 0 )THEN EXCEPTION E_DB_HAS_REFS;/*Есть записи, принадлежащие удаляемой БД*/
/*-----------------------------------------*/
SELECT COUNT( DB_ID) FROM DETAIL WHERE DB_ID = OLD.DB_ID INTO :COUNT_REF;
IF( COUNT_REF <> 0 )THEN EXCEPTION E_DB_HAS_REFS;/*Есть записи, принадлежащие удаляемой БД*/
/*========================================*/
/*В таблице регистрации пометить запись как удал¸нную
(признак изменения (LOG_UPD_GEN) устанавливается в NULL, признак удал¸нности вы÷исляется)*/
UPDATE LOG_DB_PROFILE
SET LOG_UPD_GEN = NULL
WHERE
LOG_DB_ID = OLD.DB_ID
AND LOG_UPD_GEN IS NOT NULL;/*Доп. условие, ÷то бы избежать конфликта блокировок к SET_NEW_GEN*/
/*-----------------------------------------*/
DELETE FROM CLIENT WHERE DB_ID = OLD.DB_ID;/*Исклю÷ить из списка клиентов*/
END
This file was generated with EMS InterBase/FireBird Manager (www.ibmanager.com) at 11/13/2006 10:51 PM |
![]() ![]() ![]() |