Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c