powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как отменить вставку в BeforeInsert
21 сообщений из 21, страница 1 из 1
Как отменить вставку в BeforeInsert
    #32431286
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди подскажите пожалуста как мне сделать следующее.
Надо вставит запись, но перед этим проверить кое что и по результатам проверки решить, вставлять или не вставлять. Может быть можно какой то параметр из BeforeInsert вернуть(или изменить).
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431310
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нежно "ругнуться", то генери в триггере EXCEPTION.
Если нужно "по тихому", то сделай триггер AFTER INSERT и в нём тихонько удаляй только-что вставленную запись.
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431323
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в AfterInsert неполучиться, потому что осуществляеться проверка на циклы, поиском в глубину, ну и если сначало каряво вставить то ... вообщем понятно.
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431342
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне лично - нет.
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431344
Фотография аувв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ватману понятно, что нужно делать эксепшон!
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431345
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставляй через необновляемое представление. Навесь на это представление триггер и в триггере решай вставлять или нет...
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431363
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще то про понятно, я имел в виду что если цикл есть то поск не очень то закончиться, без дополнительных проверок, а в IB кстати нет ведь массивов( или я ошибаюсь). А вот идея насчёт неизменяемого представления мне нравиться, спасибо.
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431370
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Под циклом я имел ввиду то что одна запись таблицы ссылаеться на другую а та на треью, и вот надо что бы третья на первую вдруг ссылаться не стала
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431375
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Деревья строишь? Так здесь более логично исключение возбуждать...
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431379
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подожди до вечера. Я пока трезвый, понять тебя ну никак не могу.
Вот вечерком, приму грам 200 на душу, мож и уразумею.
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431384
lasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай через представления. Очень удобно.
Я подобную же проблему решил именно так - необновляемые представления
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431386
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Gold
Не исключения не хочу, хочу что бы тихо пригрохнула и не кому не сказала.
2 Мимопроходящий
Удачного вечера :)
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431389
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убил запись - спас дерево.
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431588
hyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем говорить?)
Можно же сгенерить и сразу словить исключение : when exception ... do begin end
А при возникновении исключения оператор вроде дожен откатываться.
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431649
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не майтесь. По-тихому, это одно слово: Abort
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431750
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам придумал?
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431807
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой... А разве BeforeInsert здесь не событие TDataset?
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32431822
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, мы про сервер. А ты?
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32432030
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо, я уже сделал через неизменяемые представления.Замечательно работает. А вот с 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
Как отменить вставку в BeforeInsert
    #32432180
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VatmanCREATE TRIGGER VIEW_LINKS_AI0 FOR VIEW_LINKS
INACTIVE AFTER INSERT POSITION 0
Так INACTIVE , говоришь
...
Рейтинг: 0 / 0
Как отменить вставку в BeforeInsert
    #32432302
Vatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой, InActive это случайность. Проверялось же конечно с Active.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как отменить вставку в BeforeInsert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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