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

Вниз

Автоинкрементные поля в Interbase   Найти похожие ветки 

 
kalliopiy ©   (2003-01-24 16:13) [0]

Здравствуйте!

Существует следующая проблема: при работе с таблицей Interbase через спец. компоненты (TIBDatabase, TIBTransaction, TIBTable), делаю для нее сначала Insert, потом после заполнения полей делаем Post, но что-то автоинкрементное поле (для которого должен срабатывать триггер и он таки срабатывает) не обновляет своего значения, т.е. так и остается Null-ом. Что же делать?


 
Johnmen ©   (2003-01-24 16:43) [1]

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


 
kalliopiy ©   (2003-01-24 17:21) [2]

Не-а, это не решение...
Сначала (забалговременно) получим следующее значение генератора, а сразу после этого какой-нибудь другой юзер возьмет и запишет чего-то в таблицу. И что делать? Наше полученное значение уже не покатит, т.к. будет меньше на 1 чем нужно...


 
jack128 ©   (2003-01-24 17:39) [3]

не понял проблемы
ты получил новый id(допустим 66)
другой юзер получил новый Id(67) и вставил запись в таблицу.
ты вставил свою запись в таблицу.
И чего здесь н катит?


 
kalliopiy ©   (2003-01-24 18:06) [4]

Вобщем-то, тут проблема не совсем в этом... Объясню поконкретнее.
Итак, есть некоторая таблица заявок requestsT и подчиненная таблица, скажем, товаров goodsT. Есть кнопочка "Новая заявка" - жмем на нее и в соотв. обработчике выполняется
requestsT.Insert
Ну, на форме заполняем всяческие атрибуты этой заявки, а также на этой форме есть список товаров для данной заявки и кнопочка (среди прочих) "Добавить товар". Поскольку таблицы связаны, то хочется написать в OnClick"e этой кнопки что-то типа

goodsT.Insert;
goodsT["requestID"]:=requestsT["id"];
good.ShowGoodForm; //показываем форму для добавляемого товара


Но вот тут-то и происходит неприятность, т.к. requestsT["id"]=Null (ведь заявка сама только что была добавлена). Пробую перед goodsT.Insert сделать requestsT.Post - все равно не помогает, т.е. requestsT["id"] и после Поста равно Null.

Вот что происходит, вкратце... Что посоветуете?



 
jack128 ©   (2003-01-24 18:26) [5]

Может я туплю, но если ты заранее получаешь ID заявки то проблем не будет... requestT["id"] будет равен полученному тобой значению, а не Null"ю


 
kalliopiy ©   (2003-01-24 18:35) [6]

Хорошо, а как заранее получить этот самый ID?
Что, получается триггер совсем не нужен?


 
jack128 ©   (2003-01-24 18:37) [7]

совсем :)

select gen_id(<generator_name>,1) from rdb$database


 
kalliopiy ©   (2003-01-24 18:58) [8]

Странно, но попробую!
Т.е. с использованием триггера эту проблему не решить?


 
Sergey Masloff   (2003-01-24 20:37) [9]

kalliopiy ©
>Странно, но попробую!
Ничего странного. Абсолютно стандартный метод работы...



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
8-28947
Asderg
2002-10-24 13:15
2003.02.10
ПОВОРОТ битмапа


14-29024
Muxec
2003-01-23 19:14
2003.02.10
DelphiX: TImageCollection. Помогите


3-28680
T{}r(l-l
2003-01-24 15:10
2003.02.10
Вызов DTS-пэкаджа из Delphi?


1-28912
cta
2003-01-31 08:49
2003.02.10
Fatal error


14-29104
Сутковой Вадим
2003-01-25 22:35
2003.02.10
Проблема с народом.