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

Вниз

IBX - добавление записи, вызов генератора   Найти похожие ветки 

 
Девушка ©   (2005-07-31 11:39) [0]

Вопрос глупый, но все же...

Имеется TIbDataset. Поле ID - первичный ключ.

Хочу добавлять записи через DBGridEH
Получается, что нужно и GeneratorField прописывать генератор для ключевого поля и в InsertSQL писать
insert into zanyatie
(ID,....)
values
(gen_id(Generator,1),....)


Получается, что генератор вызывается дважд, и это слегка смущает...

Если оставить только в insertSQL или только GeneratorField то происходит ошибка добавления записи.

Как корректно реализовать добавления новой записи?


 
_dimka ©   (2005-07-31 11:59) [1]

Какая ошибка? оставь только GeneratorField и должно нормально работать!


 
Девушка ©   (2005-07-31 12:07) [2]


> Какая ошибка? оставь только GeneratorField и должно нормально
> работать!

А в insertSQL что писать?


 
msguns ©   (2005-07-31 13:47) [3]

В списке полей не указывать ID


 
}{ander ©   (2005-07-31 14:00) [4]

2 msguns
// В списке полей не указывать ID

Если ключевое поле заполняется на клиенте, то ID нужно указывать обязательно.

2 Девушка

Заполняешь GeneratorField, а в insertSQL пишешь:
insert into zanyatie
(ID,field1,...,fieldn)
values
(:new_id,:new_field1,...,:new_field)


 
msguns ©   (2005-07-31 14:14) [5]

>}{ander ©   (31.07.05 14:00) [4]
>Если ключевое поле заполняется на клиенте, то ID нужно указывать обязательно.

Смысл ?
А если он есть, то надо в триггере таблицы Before Insert прописать строку с IF NEW.ID IS NULL THEN вызов генератора

В противном случае ID будут притнимать значения "через раз"


 
}{ander ©   (2005-07-31 14:22) [6]

> msguns ©   (31.07.05 14:14) [5]
> Смысл ?

Чтобы сразу после вставки записи ее можно было бы сразу же прочитать. Иначе ID вновьвставленной записи никик не получишь (сервер-то его вставляет, но вот клиент о его значении ничего не знает). А так новое значение ID берется из GeneratorField и перед постом вставляется в new_id.

> надо в триггере таблицы Before Insert прописать строку с IF NEW.ID IS NULL THEN вызов генератора

Конечно. Кто же спорит?..



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
3-1122557123
tormoz
2005-07-28 17:25
2005.09.11
Скорорость работы с таблицой БД


14-1124072493
Думкин
2005-08-15 06:21
2005.09.11
15 августа! С днем ребята


3-1122480536
sicilian.ua
2005-07-27 20:08
2005.09.11
Ошибка в cgi которой не должно быть


14-1123495177
WondeRu
2005-08-08 13:59
2005.09.11
Только узнал, что Longhorn переименовали в Vista ...


1-1124737726
Yozch1
2005-08-22 23:08
2005.09.11
Сохранение данных в VirtualTreeView