Delphi & interbase

Возможно ли и если да то как сделать автоинкремент главного ключа.
Номер выпуска : 1881
Возраст листа : 142 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/76921
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Я это делаю таким макаром:
procedure MakeTrigger(trs :TIBTransaction;
GenName, // имя генератора
ID_Name, // имя триггера
TablName, // имя таблицы
FieldName :String // имя поля, на которое
ставим тригер.
);
var
trsAct :Boolean;
begin
trsAct := trs.Active;
dmInqDB.qr.Transaction := trs;
dmInqDB.qr.Transaction.Active := True;
dmInqDB.qr.SQL.Clear;
dmInqDB.qr.SQL.Add('CREATE GENERATOR '+GenName+';');
dmInqDB.qr.ExecQuery;
dmInqDB.qr.SQL.Clear;
dmInqDB.qr.SQL.Add('CREATE TRIGGER '+ID_Name+' FOR '+ TablName);
dmInqDB.qr.SQL.Add('BEFORE INSERT');
dmInqDB.qr.SQL.Add('AS');
dmInqDB.qr.SQL.Add('begin');
dmInqDB.qr.SQL.Add('new.'+FieldName+'=gen_id('+GenName+',1);');
dmInqDB.qr.SQL.Add('end;');
dmInqDB.qr.ExecQuery;
dmInqDB.qr.SQL.Clear;
dmInqDB.qr.SQL.Add('SET GENERATOR '+GenName+' TO 0');
dmInqDB.qr.ExecQuery;
trs.Active := trsAct;
end;
Здесь dmInqDB.qr - компонент-кверь. Эту процедуру нужно вызывать только один
раз - например, проверили наличие таблицы, если ее нет, сгенирили структуру,
описали индексы и вызвали ее.
Единственное неудобство с триггерами - если при добавлении записи приспичит
получить значение этого поля. Приходится добавлять запись, записывать в одно
из полей (ни автокриментное только) уникальные данные ('####', например в
строковое поле). Потом делать Post, Refresh и Locate для этих ####
Номер выпуска : 1900
Возраст листа : 143 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/77195
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru