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