Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как отменить вставку в BeforeInsert / 21 сообщений из 21, страница 1 из 1
04.03.2004, 14:26
    #32431286
Vatman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Люди подскажите пожалуста как мне сделать следующее.
Надо вставит запись, но перед этим проверить кое что и по результатам проверки решить, вставлять или не вставлять. Может быть можно какой то параметр из BeforeInsert вернуть(или изменить).
...
Рейтинг: 0 / 0
04.03.2004, 14:34
    #32431310
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Если нежно "ругнуться", то генери в триггере EXCEPTION.
Если нужно "по тихому", то сделай триггер AFTER INSERT и в нём тихонько удаляй только-что вставленную запись.
...
Рейтинг: 0 / 0
04.03.2004, 14:39
    #32431323
Vatman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
в AfterInsert неполучиться, потому что осуществляеться проверка на циклы, поиском в глубину, ну и если сначало каряво вставить то ... вообщем понятно.
...
Рейтинг: 0 / 0
04.03.2004, 14:47
    #32431342
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Мне лично - нет.
...
Рейтинг: 0 / 0
04.03.2004, 14:47
    #32431344
аувв
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
ватману понятно, что нужно делать эксепшон!
...
Рейтинг: 0 / 0
04.03.2004, 14:48
    #32431345
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Вставляй через необновляемое представление. Навесь на это представление триггер и в триггере решай вставлять или нет...
...
Рейтинг: 0 / 0
04.03.2004, 14:53
    #32431363
Vatman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Вообще то про понятно, я имел в виду что если цикл есть то поск не очень то закончиться, без дополнительных проверок, а в IB кстати нет ведь массивов( или я ошибаюсь). А вот идея насчёт неизменяемого представления мне нравиться, спасибо.
...
Рейтинг: 0 / 0
04.03.2004, 14:55
    #32431370
Vatman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Под циклом я имел ввиду то что одна запись таблицы ссылаеться на другую а та на треью, и вот надо что бы третья на первую вдруг ссылаться не стала
...
Рейтинг: 0 / 0
04.03.2004, 14:56
    #32431375
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Деревья строишь? Так здесь более логично исключение возбуждать...
...
Рейтинг: 0 / 0
04.03.2004, 14:57
    #32431379
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Подожди до вечера. Я пока трезвый, понять тебя ну никак не могу.
Вот вечерком, приму грам 200 на душу, мож и уразумею.
...
Рейтинг: 0 / 0
04.03.2004, 15:00
    #32431384
lasta
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Делай через представления. Очень удобно.
Я подобную же проблему решил именно так - необновляемые представления
...
Рейтинг: 0 / 0
04.03.2004, 15:01
    #32431386
Vatman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
2 Gold
Не исключения не хочу, хочу что бы тихо пригрохнула и не кому не сказала.
2 Мимопроходящий
Удачного вечера :)
...
Рейтинг: 0 / 0
04.03.2004, 15:02
    #32431389
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
убил запись - спас дерево.
...
Рейтинг: 0 / 0
04.03.2004, 16:50
    #32431588
hyh
hyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
А зачем говорить?)
Можно же сгенерить и сразу словить исключение : when exception ... do begin end
А при возникновении исключения оператор вроде дожен откатываться.
...
Рейтинг: 0 / 0
04.03.2004, 17:24
    #32431649
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Не майтесь. По-тихому, это одно слово: Abort
...
Рейтинг: 0 / 0
04.03.2004, 18:17
    #32431750
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Сам придумал?
...
Рейтинг: 0 / 0
04.03.2004, 18:44
    #32431807
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
ой... А разве BeforeInsert здесь не событие TDataset?
...
Рейтинг: 0 / 0
04.03.2004, 18:51
    #32431822
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Вообще-то, мы про сервер. А ты?
...
Рейтинг: 0 / 0
05.03.2004, 08:08
    #32432030
Vatman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
Всем огромное спасибо, я уже сделал через неизменяемые представления.Замечательно работает. А вот с Exсeptoin в тригере на AfterInsert, для таблицы чего то подтормаживает. Может делаю чего не так
вот для представления
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TRIGGER VIEW_LINKS_AI0 FOR VIEW_LINKS
INACTIVE AFTER INSERT POSITION  0 
as
DECLARE VARIABLE A INTEGER;
begin
  execute procedure getcaninsert(new. "father" ,new. "children" )
    returning_values :A;
  if (A= 1 ) then
    begin
      insert into  "Links" ( "father" , "children" ) values (new. "father" ,new. "children" );
    end
end

А вто для таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TRIGGER  "Links_AI0"  FOR  "Links" 
ACTIVE AFTER INSERT POSITION  0 
as
DECLARE VARIABLE A INTEGER;
begin
  execute procedure getcaninsert(new. "father" ,new. "children" )
    returning_values :A;
  if (A= 0 ) then
    EXCEPTION MY_EXCEPTION;
  when exception MY_EXCEPTION do A= 0 ;
end
...
Рейтинг: 0 / 0
05.03.2004, 10:05
    #32432180
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
VatmanCREATE TRIGGER VIEW_LINKS_AI0 FOR VIEW_LINKS
INACTIVE AFTER INSERT POSITION 0
Так INACTIVE , говоришь
...
Рейтинг: 0 / 0
05.03.2004, 10:57
    #32432302
Vatman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отменить вставку в BeforeInsert
ой, InActive это случайность. Проверялось же конечно с Active.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как отменить вставку в BeforeInsert / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]