Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Последовательность событий при генерации ID   Найти похожие ветки 

 
vic1   (2004-05-06 12:51) [0]

Есть база на FB, доступ с Delphi через FIB.Есть 2 табл - связанная и подчиненная, в подчнненную ID берется с главной ч-з MAS_ . В главной табл табл есть триггер на BeforeInsert для генерации ID через генератор. В FIBDataSet, связанном с главной заполнены AutoUpdateOptions. После Insert перед POst проверяю ID(showmessage) - присваивается номер на 1 больше пред-го(напр 3 после 2), после Post - ID на 1 увел-ся (вместо 3, который только видел - реально 4), а в подчиненной табл имею 3. Получается из подчиненной затем выбирается запись соответствующая предыдущей записи в главной.

Помогите, пожалуйста, разобраться в происходящей последовательности событий или как это сделать правильно.

Спасибо.


 
HSolo ©   (2004-05-06 13:16) [1]

Как выглядит триггер? Наверное, что-то вроде:
begin
new.id = gen_id(my_generator, 1);
end

Если это так - добавьте проверку:
begin
if (new.id is null) then
 new.id = gen_id(my_generator, 1);
end


 
Johnmen ©   (2004-05-06 13:19) [2]

Оставить получение очередного значения генератора в приложении.
А из триггера - убрать.


 
HSolo ©   (2004-05-06 13:23) [3]

>Оставить получение очередного значения генератора в приложении.
>А из триггера - убрать.

Можно и убрать - но если эту базу будет использовать другое приложение? По-моему, вариант с проверкой на null в триггере более безопасный :)


 
Курдль ©   (2004-05-06 13:25) [4]

А чем вызвано применение триггера для получения нового ID?
Разве IB не умеет делать автоинкрементные (serial) идентификаторы?


 
Johnmen ©   (2004-05-06 13:35) [5]

>Можно и убрать - но если эту базу будет использовать другое приложение?

Не понял - что с того ?

>По-моему, вариант с проверкой на null в триггере более безопасный :)

Я бы сказал, более надежный. С т.з. БД, но не клиента.


 
HSolo ©   (2004-05-06 14:11) [6]

>>Можно и убрать - но если эту базу будет использовать другое приложение?
>Не понял - что с того ?
Просто тогда в каждом приложении, работающем с этой базой, нужно будет получать значение генератора на клиенте. Насколько это существенно - решать автору вопроса.

>>По-моему, вариант с проверкой на null в триггере более безопасный :)
>Я бы сказал, более надежный. С т.з. БД, но не клиента.
Именно так. Я как раз о БД и забочусь


 
Johnmen ©   (2004-05-06 14:16) [7]

>Просто тогда в каждом приложении, работающем с этой базой,
>нужно будет получать значение генератора на клиенте.

Как правило, это и требуется. Для внутренних целей приложения...


 
vic1   (2004-05-06 16:03) [8]

Да, спасибо, когда поставил проверку, все пошло.
При работе сIBExpert если ставлю автоинкремент-генератор - настройки не сохраняются. Не знаю может что делаю не правильно.

Если можно, еще один вопрос:
у меня есть BLOB поле, с ним связан DBMemo, для хранения текстов, если тексты будут разрастаться нужно ли мне для чтения-записи использовать потоки, или можно так оставить?

И Спасибовсем.


 
Johnmen ©   (2004-05-06 16:22) [9]

>если тексты будут разрастаться

Разрастание - понятие относительное.
Да и TDBRichEdit существует...



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

Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
14-1084024608
default
2004-05-08 17:56
2004.05.30
ImageHlp.h


11-1073638302
<Falcon>
2004-01-09 11:51
2004.05.30
Для ТТ шрифтов Font.FontWidht - это значение в пикселах?


3-1083926709
Саша
2004-05-07 14:45
2004.05.30
Поиск записи в таблице


3-1083922382
Alex_xxx
2004-05-07 13:33
2004.05.30
Формат даты в запросе


4-1081938230
Tommy
2004-04-14 14:23
2004.05.30
NTQuerySystemInformation and Threads





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский