powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / if exists or exists - очень непонятный мне глюк
6 сообщений из 6, страница 1 из 1
if exists or exists - очень непонятный мне глюк
    #32303750
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firebird 1.0 и Эксперт

Подскажите, коллеги, валидна ли такая постановка вопроса в ХП:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
  if
  (
    exists
    (
      select *
      from  "permwrite" 
      where  "permwrite" . "metid"  = : "id" 
      and  "permwrite" . "userid"  = : "userid" 
    )
    or
    exists
    (
      select  "groupid" 
      from  "usergroup" 
      where  "userid"  = : "userid"  and
         "groupname"  = '_admin'
    )
  )
  then
  begin
    delete from  "table"  where  "id" =: "id" ;
  end
  else
  begin
    exception  "insuffauth" ;
  end


У меня глючит следующим образом:

после первого запуска вываливается эксепшн (из триггера на delete , не insuffauth), когда второй раз запускаешь процедуру, вообще ничего не происходит...

а вот если в ифе только один экзистс (второй), то тогда вываливается эксепшн каждый раз, то есть все нормально...

может это какой баг, который есть в списке багов?
...
Рейтинг: 0 / 0
if exists or exists - очень непонятный мне глюк
    #32304007
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй на 1.5 Всё равно единичку править не будут уже.
...
Рейтинг: 0 / 0
if exists or exists - очень непонятный мне глюк
    #32304148
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть код в принципе валидный?

мне не хотелось бы пока переходить на Кандидат, даже на Релиз думаю не сразу перейду.

если код правильный, но проявляется баг, я лучше воркараунд напишу...
...
Рейтинг: 0 / 0
if exists or exists - очень непонятный мне глюк
    #32305099
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переписал таким макаром

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
    if
    (
      exists
      (
        select *
        from  "permwrite" 
        where  "permwrite" . "metid"  = : "id" 
        and  "permwrite" . "userid"  = : "userid" 
      )
    )
    then
    begin
        if
        (
          exists
          (
            select  "groupid" 
            from  "usergroup" 
            where  "userid"  = : "userid"  and
             "groupname"  = '_admin'
          )
        )
        then
        begin
          delete from  "mytable"  where  "id" =: "id" ;
        end
        else
        begin
          exception  "insuffauth" ;
        end
    end
    else
    begin
        exception  "insuffauth" ;
    end


то есть чтобы не было if exists or exists, думал в этом дело - та же фигня :((( после одного exists нельзя сразу вызвать другой, даже в другом блоке??

никак не пойму это баг или я синтаксис неправиьлный пишу...

кто поможет? где еще спросить может?
...
Рейтинг: 0 / 0
if exists or exists - очень непонятный мне глюк
    #32305840
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на epsylon косвенно признали, что это баг.

надо делать воркараунд , простите за мой французский...
...
Рейтинг: 0 / 0
if exists or exists - очень непонятный мне глюк
    #32306380
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это тоже самое что это
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / if exists or exists - очень непонятный мне глюк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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