Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];

Вниз

Триггеры и генераторы в IB6   Найти похожие ветки 

 
Turalyon   (2002-03-11 12:08) [0]

Помогите пожалуйста.
Проблемма следущая. Есть БД в IB6 в ней 3 таблицы. Одна связана с 2-мя другими. Необходимо добавлять записи сразу во все 3 в одной транзакции.
В качестве ключевых полей во всех таблицах сделал автоинкрементные поля, реализовал с помощью триггеров и генераторов. Работаю с компонентами IBDataSet, IBDataase, ...
Проблемма заключается в том, что при добавлении новой записи в таблицу прога требует от меня значение этих самых ключевых полей (в SQL запросах связанных с добавлением, удалением.... поставил что бы ключевое поле не обновлялось). Постаил присваивание ключевому полю любого значения, начало добавлять... (в базу реально добавляет нужное значение, триггер срабатывает нормально), но из программы видно только то левое значение, которое я присвоил... (а не то которое реально в базе), Даже если сделать IBTransaction1.CommitRetaining значения все равно не обновляются. Вопрос такой - как с этим боротся чтобы реально получить значение в таблице, желательно не завершая транзакцию.

Вот код добавления новой записи:

IBDataSet1.Edit;
IBDataSet1.FieldByName("C_ID").AsInteger := 1;
IBDataSet1.FieldByName("C_NAME").AsString := CompName;
IBDataSet1.Post;


Если заремарить строку
IBDataSet1.FieldByName("C_ID").AsInteger := 1;
Начинает ругаться... что полю C_id должно быть присвоено значение...
Вот SQL запрос связанный с добавлением
insert into COMPUTER
(C_NAME)
values
(:C_NAME)


 
Turalyon   (2002-03-11 14:59) [1]

И все же???


 
Igor_   (2002-03-11 15:04) [2]

У тебя триггер, который назначает значение автоинкрементных полей объявлен Before Insert? Если его объявить Before Insert, то по идее в программе при добавлении новой записи она не будет требовать значения этих автоинкрементных полей


 
Turalyon   (2002-03-11 15:16) [3]

Вот так он создан....

CREATE TRIGGER "COMPCOUNT" FOR "COMPUTER"
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.c_id = gen_id(COMP_GEN,1);
end


И все равно требует...


 
Turalyon   (2002-03-11 15:21) [4]

Я вроде разобрался у компонента IBDataSet есть св-во Generator Field там настроил, и вроде все заработало..... пока


 
Igor_   (2002-03-11 15:23) [5]

Поздравляю...
пока Поздравляю



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

Форум: "Базы";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
14-9602
VuDZ
2002-02-21 09:31
2002.04.04
Вопрос сезона


1-9440
Graf57
2002-03-23 13:25
2002.04.04
Как пользоваться Tcanvas, TPen и т.п?


4-9672
mindguru
2002-02-02 08:50
2002.04.04
Вопросик мона?


3-9405
Shaman_Naydak
2002-03-12 22:27
2002.04.04
Глюкавый MSSQL 2000 + проблема с ARITHABORT


1-9571
snoup
2002-03-24 22:25
2002.04.04
Мне для звонилки нужна статистика (когда считает сколько ты времени провел в интернете)





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