** Dizapp |
Отправлено: 09.05.2006, 20:03 |
|
Не зарегистрирован
|
мне нужно автоинкремент, но чтобы id увеличивался каждый раз в два раза по сравнению с предыдущем |
|
Valdemar |
Отправлено: 10.05.2006, 07:46 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Сделайте триггер на вставку новой записи и в нем генерируйте нужное значение. |
|
** Dizapp |
Отправлено: 10.05.2006, 16:07 |
|
Не зарегистрирован
|
Делаю так CODE |
AS
declare variable X integer;
BEGIN
IF (NEW.IDGROUP IS NULL) THEN
begin
if(x=0) then x=1;
NEW.IDGROUP = GEN_ID(GEN_GROUPS_ID,X*2);
X = new.idgroup;
end
END |
А при вставке выдает ошибку
validation error for column IDGROUP, value "***null**".
А чего я не так пишу? |
|
olegenty |
Отправлено: 11.05.2006, 11:53 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
if (x=0) then x=1 — никогда не срабатывает. х = NULL. видимо, и gen_id в этом случае даёт NULL. (NULL * 2 = NULL).
|
|
** Dizapp |
Отправлено: 11.05.2006, 15:57 |
|
Не зарегистрирован
|
вот теперь нормально все срабатываетCODE |
AS
declare variable X integer;
BEGIN
IF (NEW.IDGROUP IS NULL) THEN
begin
X = GEN_ID(GEN_GROUPS_ID,0);
if (X=0) then X=1;
NEW.IDGROUP = GEN_ID(GEN_GROUPS_ID,X);
end
END | И при вставке значений в ibexpert'e все замечательно работает. А когда вставлаю из билдера
CODE | for(Form21->IBDataSet1->First();!Form21->IBDataSet1->Eof;Form21->IBDataSet1->Next())
{
str=Form21->IBDataSet1->FieldByName(Form21->NameGroup)->Value;
Form3->CheckListBox1->Items->Add(str);
Form1->IBDataSet1->Insert();
Form1->IBDataSet1->FieldByName("NAMEGROUP")->Value=str;
Form1->IBDataSet1->FieldByName("COUNTPARAM")->Value=0;
Form1->IBDataSet1->Post();
} |
То заполняется просто с увеличанием на 1. Ничего не понимаю |
|
** Dizapp |
Отправлено: 12.05.2006, 13:29 |
|
Не зарегистрирован
|
Все. разобралась. Всем спасибо. |
|