Существует несколько способов задавать в таблице уникальный ID.
Вы можете использовать поле с автоприращением Этот метод не очень надежен. Если ваша таблица каким-то образом испортится, и вам понадобиться ее пересобрать, автоинкрементальные поля будут перенумерованы. Хотя это легкий способ для ситуации, когда вы не ссылаетесь на id таблицы в других таблицах, но это не очень мудрое решение в других случаях.
Вы можете использовать ID-таблицу Если у вас имеется приложение, где нескольким таблицам необходимы уникальные ID, создайте ID-таблицу с двумя полями:
Table Name A (первичный ключ) Last Id N В методе BeforePost таблицы, которой необходим уникальный ID, делайте примерно так:
TableBeforePost(Sender: TObject) var
Id: Integer;begin
with TTable(Sender) do begin {проверяем, существует ли ID для этой записи} if Field[0].AsInteger=0 then begin {ищем имя таблицы в ID-Таблице} IDTable.FindKey[Name] {извлекаем последний Id - подразумеваем блокировку записи} Id := IDTable.FieldByName['Last Id'].AsInteger; Inc(Id); {записываем новый Id в ID-таблицу - подразумеваем разблокировку таблицы} IDTable.FieldByName['Last Id'].AsInteger := Id; IDTable.Post; {записываем извлеченный ID в вашу таблицу} Field[0].AsInteger := Id; end; end;end;