Файл: ...\Samples\Solution\Db\Newid.scx
Этот пример использует хранимую процедуру базы данных для предоставления значения по умолчанию для первичного ключа таблицы.
Для создания уникального ID по умолчанию
-
Добавьте в базу данных отдельную таблицу, в которой будет храниться следующий ID для каждой таблицы базы данных.
Таблица в образце названа как Ids.dbf. Она содержит два поля:
Table C(10), NextID I. -
В хранимых процедурах базы данных, создайте функцию, которая вернет значение последующего ID из таблицы ID.
Эта процедура в образце именована как
NewID. Код для этой функции приведен ниже. -
Установите значение по умолчанию для поля в имя этой функции.
Хранимая процедура NewID
Скопировать код | |
|---|---|
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 | |