Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
Вниз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"
endNEWID -> KODID By 0
илиbegin
,
IF (NEW.KODID IS NULL) THEN
NEW.KODID = GEN_ID(NEWID, 0);//с шагом "0"
endNEWID -> 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c