Форум: "Базы";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизПомогите с синтаксисом СКЛ Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c