Главная страница
    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.026 c
1-28834
UDS
2003-02-02 20:07
2003.02.10
Как открыть текстовый файл?


4-29165
Big_Rom
2002-12-27 20:21
2003.02.10
как програмно поменять размер страницы принтера


1-28748
Sentinel
2003-01-31 23:48
2003.02.10
ShlObj.SHGetPathFromIDList - обратное преобразование.


1-28831
TimonSoft
2003-02-02 19:20
2003.02.10
Помогите разобраться с KeyPress в Edit.


3-28635
Siv Soft
2003-01-22 17:04
2003.02.10
Рвет кодировку MSSQL -> dbase IV





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