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

Вниз

Последовательность событий при генерации 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.137 c
4-1080283710
Kalishenko Stas
2004-03-26 09:48
2004.05.30
FindFirstChangeNotification для Novell


14-1083873348
SeriousSam
2004-05-06 23:55
2004.05.30
Подключайтесь!


3-1084116682
Alleum
2004-05-09 19:31
2004.05.30
реализовать перемену строк местами


6-1081777335
Ivolg
2004-04-12 17:42
2004.05.30
FTP


6-1081768676
Геннадий
2004-04-12 15:17
2004.05.30
Как создать вложение при отправке электронного письма? idSMTP