Файл: ...\Samples\Solution\Db\Newid.scx

Этот пример использует хранимую процедуру базы данных для предоставления значения по умолчанию для первичного ключа таблицы.

Для создания уникального ID по умолчанию

  1. Добавьте в базу данных отдельную таблицу, в которой будет храниться следующий ID для каждой таблицы базы данных.

    Таблица в образце названа как Ids.dbf. Она содержит два поля: Table C(10), NextID I.

  2. В хранимых процедурах базы данных, создайте функцию, которая вернет значение последующего ID из таблицы ID.

    Эта процедура в образце именована как NewID. Код для этой функции приведен ниже.

  3. Установите значение по умолчанию для поля в имя этой функции.

Хранимая процедура NewID

 CopyCode imageСкопировать код
FUNCTION NewID(tcAlias)
LOCAL lcAlias, lnID, lcOldReprocess, lnOldArea

  lnOldArea = SELECT()
  
  IF PARAMETERS() < 1
    lcAlias = UPPER(ALIAS())
  ELSE
    lcAlias = UPPER(tcAlias)
  ENDIF
        
  lcOldReprocess = SET('REPROCESS')

  * Заблокируем, пока пользователь не нажмет Esc
  SET REPROCESS TO AUTOMATIC

  IF !USED("IDS")
    USE newid!ids IN 0
  ENDIF
  SELECT ids
      
  IF SEEK(lcAlias, "Ids", "table")
    IF RLOCK()
      lnID = ids.nextid
      REPLACE ids.nextid WITH ids.nextid + 1
      UNLOCK
    ENDIF
  ENDIF
    
  SELECT (lnOldArea)
  SET REPROCESS TO lcOldReprocess
  
  RETURN lnID
ENDFUNC

Смотрите также