Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
4-32057
Delphi 5.01
2002-08-21 18:05
2002.10.10
Очень легкий вопрос! Как скопировать фаил из ресурса!


7-32026
Muskat
2002-07-30 21:34
2002.10.10
Как сделать свою оболочку, вместо Explorer’а?


14-31994
Wolf226
2002-09-13 16:01
2002.10.10
Существует ли AutoIncrement в Серверных БД?


4-32059
B-Ars
2002-08-23 13:13
2002.10.10
Возможно ли изменение размера/положения панели задач?


7-32021
Big_Rom
2002-07-30 14:05
2002.10.10
Авто отрыв в дос печати





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский