GUID поля

Обсуждение возникших проблем, предложений и ошибок IBDAC компонентов
Ответить
xaka93
Сообщения: 2
Зарегистрирован: Вт 05 мар 2013 09:09

GUID поля

Сообщение xaka93 » Вт 05 мар 2013 09:12

Подскажите пожалуйста как реализовать GUID поля с автоматической генерацией при добавлении записи ???

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: GUID поля

Сообщение AndreyZ » Вт 05 мар 2013 12:44

Вы можете использовать следующий код:

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

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)
);

xaka93
Сообщения: 2
Зарегистрирован: Вт 05 мар 2013 09:09

Re: GUID поля

Сообщение xaka93 » Вт 05 мар 2013 13:29

Спасибо =)

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: GUID поля

Сообщение AndreyZ » Ср 06 мар 2013 09:57

Я рад что смог помочь.

Ответить