Страница 1 из 1

GUID поля

Добавлено: Вт 05 мар 2013 09:12
xaka93
Подскажите пожалуйста как реализовать GUID поля с автоматической генерацией при добавлении записи ???

Re: GUID поля

Добавлено: Вт 05 мар 2013 12:44
AndreyZ
Вы можете использовать следующий код:

Код: Выделить всё

begin
  IBCQuery1.Options.ReturnParams := True;
  IBCQuery1.SQL.Text := 'select * from test_guid';
  IBCQuery1.SQLInsert.Text := 'insert into test_guid(id, gd) values(:id, GEN_UUID()) returning gd';
  IBCQuery1.Open;
end;
, где таблица test_guid имеет следующую структуру:

Код: Выделить всё

CREATE TABLE TEST_GUID (
    ID  INTEGER PRIMARY KEY,
    GD  CHAR(16) CHARACTER SET OCTETS
);
Более подробную информацию об использовании UUID и GUID вы можете найти по следующей ссылке: http://www.firebirdfaq.org/faq98/
Также, можно генерировать GUID на клиенте, например так:

Код: Выделить всё

var
  gd: TGUID;
begin
  IBCQuery1.SQL.Text := 'select * from test_guid1';
  IBCQuery1.Open;
  IBCQuery1.Insert;
  IBCQuery1.FieldByName('id').AsInteger := 1;
  CreateGUID(gd);
  IBCQuery1.FieldByName('gd').AsString := GUIDToString(gd);
  IBCQuery1.Post;
end;
, где таблица test_guid1 имеет следующую структуру:

Код: Выделить всё

CREATE TABLE TEST_GUID1 (
    ID  INTEGER PRIMARY KEY,
    GD  VARCHAR(38)
);

Re: GUID поля

Добавлено: Вт 05 мар 2013 13:29
xaka93
Спасибо =)

Re: GUID поля

Добавлено: Ср 06 мар 2013 09:57
AndreyZ
Я рад что смог помочь.