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

Вниз

Delphi + FireBird   Найти похожие ветки 

 
m   (2007-12-10 10:57) [0]

Добрый день.

Помогите в таком вопросе:

В Firebird для инкрементного поля использую триггер:

begin
 IF (NEW.KODID IS NULL) THEN
    NEW.KODID = GEN_ID(NEWID, 1);//с шагом "1"
end
,

а также в Delphi в ibQuery есть поле GeneratorField, в котором можно указать тот же генератор и шаг:
NEWID -> KODID By 0

Скажите, как правильно, как лучше и есть ли вообще разница:

begin
 IF (NEW.KODID IS NULL) THEN
    NEW.KODID = GEN_ID(NEWID, 1);//с шагом "1"
end
,

NEWID -> KODID By 0

или

begin
 IF (NEW.KODID IS NULL) THEN
    NEW.KODID = GEN_ID(NEWID, 0);//с шагом "0"
end
,

NEWID -> KODID By 1


 
Сергей М. ©   (2007-12-10 11:04) [1]


> как правильно


Правильным, наверно, будет минимизация кол-ва обращений к генератору.

В обоих случаях он у тебя "дергается" дважды - сначала в dsql, затем в psql


 
Johnmen ©   (2007-12-10 11:21) [2]

Второй вариант неверен по сути.


 
Сергей М. ©   (2007-12-10 11:30) [3]


> m   (10.12.07 10:57)


Тогда уж так

/* в триггере */
begin
IF (NEW.KODID IS NULL) THEN /* если клиент не удосужился заполнить поле */
   NEW.KODID = GEN_ID(NEWID, 1); /* дернем генератор и сами заполним */
end,

на клиенте:

NEWID -> KODID By 1 //пожалуй, удосужимся, ибо оно, значение поля, для вставки записи нам нужно отнюдь не всегда, но довольно часто


 
m   (2007-12-10 12:12) [4]

Спасибо за помощь.



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1197161141
O.Snopok
2007-12-09 03:45
2008.01.06
Как приостановить выполнение процедуры до изменения Clipboard


15-1196527077
Fraider
2007-12-01 19:37
2008.01.06
С вами такое бывает?


2-1197112580
Петр
2007-12-08 14:16
2008.01.06
семитировать ввод в поле с клавиатуры


2-1196941670
Nil
2007-12-06 14:47
2008.01.06
распределение памяти в динмаическом массиве записей


15-1196606871
Lip
2007-12-02 17:47
2008.01.06
ACM турниры и реальные задачи! Какая связь?