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

Вниз

insert с последующим select - неадекватное поведение в ХП   Найти похожие ветки 

 
Desdechado ©   (2002-09-20 10:08) [0]

Вот фрагмент хранимой процедуры.
INSERT INTO ObjNames ( type_id, obj_name, obj_comment, parent_id, access_id )
VALUES ( :nTask, :cText, " ", :nNode, :nAccessID );
SELECT obj_id FROM ObjNames
WHERE obj_name = :cText AND type_id = :nTask AND
parent_id = :nNode AND access_id = :nAccessID
INTO :OBJ_ID;
INSERT INTO TreeLinx ( node_id, obj_id, is_branch )
VALUES ( :OBJ_ID, :nLinkObj, :lBranch );

Поле obj_id в таблице ObjNames заполняется триггером из генератора. Первый INSERT проходит нормально, никаких исключений не происходит. НО: select, выполняемый сразу поcле insert, дает NULL. Соответственно, второй INSERT вставляет этот NULL.
Как это объяснить и что делать, чтобы извлечь реальное значение?


 
Prooksius ©   (2002-09-20 10:28) [1]

Как объяснить? Хороший вопрос. В исходниках копаться надо.
Может быть триггер у тебя стоит на AfterInsert, а не на BeforeInsert..., хотя большой разницы, IMHO, нет... :-/
IB вообще хитрая штука.

Я бы посоветовал сделать так (я думаю, ты и сам знаешь :-)

1) select gen_id(generator) from RDB$Database into :obj_id

2) INSERT INTO ObjNames ( obj_id, type_id, obj_name, obj_comment, parent_id, access_id )
VALUES (:obj_id, :nTask, :cText, " ", :nNode, :nAccessID );

...
дальше используешь :obj_id везде, где надо.
Естественно, триггер придется отключить.


 
Johnmen ©   (2002-09-20 10:39) [2]

>Prooksius © (20.09.02 10:28)
>хотя большой разницы, IMHO, нет... :-/

Неужели ?.......
Разница есть, и она принципиальная....

>Desdechado ©

Так какой триггер заполняет obj_id ?



 
Desdechado ©   (2002-09-20 11:00) [3]

BeforeInsert

Но есть еще один прикол. В другой ХП аналогичная конструкция работает без проблем.

2 Prooksius © (20.09.02 10:28)
> триггер придется отключить
меня это не устраивает


 
Johnmen ©   (2002-09-20 11:14) [4]

Вероятно, проблема в триггере, а не в ХП.
Могу лишь поделиться печалями...
В свое время под FB в базе перестал адекватно работать именно триггер ! Проблему исследовал досконально, насколько смог...
И пришел для себя к выводу - глюкавость ! И скорее всего, глюк в FB.


 
Desdechado ©   (2002-09-20 13:38) [5]

2 Johnmen © (20.09.02 11:14)
> Вероятно, проблема в триггере, а не в ХП.
Спасибо. Натолкнул на мысль. У меня 3 триггера на эту таблицу, а в одном (писан давно, забыл) подменялось access_id на другое, поэтому по условию ничего потом не отбиралось.

2 All
Извините, что вылез с таким вопросом - глюкавость оказалась во мне :)



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

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

Наверх




Память: 0.48 MB
Время: 0.038 c
14-31958
Vovik
2002-09-13 11:50
2002.10.10
Delphi 7


1-31865
Денис Самохов
2002-09-29 11:34
2002.10.10
Обои рабочего стола. Обпределить момент изменения.


4-32074
oduvan
2002-08-22 10:12
2002.10.10
WinXP ругается, когда удаляю папку (созданную программно)!!!


1-31749
arnold
2002-10-01 15:12
2002.10.10
Изменение в каталоге


4-32075
ElectHp
2002-08-24 20:47
2002.10.10
Submit