Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Помогите с синтаксисом СКЛ   Найти похожие ветки 

 
axx   (2004-11-02 14:40) [0]

есть тригер ACTIVE BEFORE UPDATE POSITION 0. Подскажите каким оператором отменить обновление.


 
stud ©   (2004-11-02 14:42) [1]

а может проще вообще запретить обновление таблицы?


 
DSKalugin ©   (2004-11-02 16:21) [2]

Вызвать в нем исключительную ситуацию. Вот мой пример:

CREATE EXCEPTION "exc_DelSelf" "Запрещено удалять наши фирмы";

CREATE TRIGGER "FirmsAttributes_BD0" FOR "FirmsAttributes"
ACTIVE BEFORE DELETE POSITION 0
AS
begin
 if ("FirmsAttributes"."f_ID" in (1,2,8))
 then exception "exc_DelSelf";
end


 
Sergey_Masloff   (2004-11-02 17:24) [3]

DSKalugin ©   (02.11.04 16:21) [2]
Лучше так:

CREATE EXCEPTION ERR "Unknown Error";

CREATE PROCEDURE ERROR (
   E VARCHAR(2000))
AS
DECLARE VARIABLE EE VARCHAR(78);
BEGIN
/*-----------------------------------------------------------------------------+
|  Процедура
|    ERROR
|  Входные параметры
|    Текст сообщения об ошибке
|  Выходные параметры - нет
|
|  Назначение
|    Динамическое формирование текста EXCEPTION.
|  Примечание
|    78 это максимальная длинна сообщения в EXCEPTION в IntegBase
|  Автор
|    Неизвестен. Давно использую но написал не я. Сергей Маслов
+-----------------------------------------------------------------------------*/
  EE="";
  EE=:E;
  /*если входной параметр больше чем 78 то тут возникает ошибка
  которая успешно обрабатывается ниже*/
  UPDATE rdb$exceptions
  SET rdb$message=:E
  WHERE rdb$exception_name="ERR";
  EXCEPTION ERR;
  /*сюда попадаем только если входной параметр Е больше 78 символов*/
  /*EE - содержит 78 символов в обрезанных от E*/
when any do
  begin
     UPDATE rdb$exceptions
     SET rdb$message=:EE
     WHERE rdb$exception_name="ERR";
     EXCEPTION ERR;
  end
END


использовать так

CREATE TRIGGER SOMETABLE_BSOME FOR SOMETABLE
ACTIVE BEFORE DELETE POSITION 0
AS
begin
if SOMETABLE.SOMEFIELD in (1,2,8)) then
  EXECUTE PROCEDURE ERROR("Нельзя");
else if SOMECONDITION then
  EXECUTE PROCEDURE ERROR("Так тоже нельзя потому что %?;?*:%)");  
end


 
Sergey_Masloff   (2004-11-02 17:35) [4]

кстати автор Максим Доценко (Maxim Docenko) maxdoc@mail.ru


 
Deniz ©   (2004-11-03 07:05) [5]

> Sergey_Masloff   (02.11.04 17:24) [3]
>... Так тоже нельзя потому что %?;?*:%)");

А это что за регулярное выражение? ;-)



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.058 c
4-1093466109
Powerland
2004-08-26 00:35
2004.11.28
перехват


14-1099845523
ИМХО
2004-11-07 19:38
2004.11.28
Нашел глюк в форуме!


14-1100196893
OneFragLeft
2004-11-11 21:14
2004.11.28
IDHTTP и POST. Глюки.


1-1100276038
Petia
2004-11-12 19:13
2004.11.28
Форма


14-1100111512
zokzok
2004-11-10 21:31
2004.11.28
Абстрактные методы