Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-28687
Makhanev A.S.
2003-01-24 14:42
2003.02.10
Как программно выделить строку в DBGrid?


1-28740
Alex G
2003-01-31 23:09
2003.02.10
Проблема сортировки... Украинские слова


4-29176
DDF
2002-12-25 08:33
2003.02.10
Перехват Текста под мышью.


6-28975
Klaz
2002-12-17 08:21
2003.02.10
Как узнать IP-адрес???


1-28917
Sewix
2003-01-31 09:13
2003.02.10
из string в PChar





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