Delphirus - прграммирование на delphi
   Все о delphi Delphirus - прграммирование на delphi
blocks.gif
Навигация
 

Главная
Статьи
Базы данных
Графика
Защита
Интернет
Система
Тексты
Мультимедиа
Файлы
Формы и окна
Другое
Советы
Базы данных
Графика
Интернет
Мультимедиа
Система
Тексты
Файлы
Файлы
Исходники
Компоненты
Инфо
Поиск по сайту
Обратная связь
Самое популярное
Аккаунт
Карта сайта

 
 
 

Советы по delphi \ Базы данных \ Записи, индексы, поля, закладки \ Создание уникального ID для новой записи

Создание уникального ID для новой записи

Существует несколько способов задавать в таблице уникальный ID.

  1. Вы можете использовать поле с автоприращением

    Этот метод не очень надежен. Если ваша таблица каким-то образом испортится, и вам понадобиться ее пересобрать, автоинкрементальные поля будут перенумерованы. Хотя это легкий способ для ситуации, когда вы не ссылаетесь на id таблицы в других таблицах, но это не очень мудрое решение в других случаях.

     

  2. Вы можете использовать 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;

    Если вы поместите этот код в обработчик события таблицы BeforePost, вы убедитесь в том, что все ID будут последовательными (без "дырок"). Недостаток: если пользовать во время попытки добавления новой записи вдруг передумает, вы будете иметь запись с заполненным только полем ID.

    В случае, если вы решили воспользоваться данным способом (последовательные ID), поместите приведенный выше код в обработчик события таблицы OnNewRecord.

     

  3. Вы можете использовать ID-файл

    Используйте те же принципы, что и в предыдущем способе, но вместо ID-таблицы используется ID-Файл. Это дает преимущество за счет более высокой скорости работы, но в многопользовательской среде вы должны сами заботиться о блокировке записей.

Название: Создание уникального ID для новой записи
Дата публикации: 2004-03-19 (3012 Прочтено)

 
 

 

Page generation 0.051 seconds