Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / счетчик уникального id / 3 сообщений из 3, страница 1 из 1
30.08.2004, 13:27
    #32671112
karpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
счетчик уникального id
Добрый день!
Есть например, уникальный id (autoincrement) каждой записи и код каждой записи(primary key). Допустим мне необходимо добавить новую запись и код увеличить автоматически на 1. Что в таком случае надо делать? Можно ли kod(primary key) тоже сделать (autoincrement) или лучше выявить последний id из счетчика и соответственно изменить код?
Спасибо!
...
Рейтинг: 0 / 0
30.08.2004, 15:13
    #32671472
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
счетчик уникального id
Надо делать автоинкремент!

Ни в коем случае нельзя делать MAX()+1 - в сетевой задаче неизбежно получишь одинаковые значения id.

Правда, есть варианты в способе реализации автоинкремента.

1) Использовать поля Integer-AutoIncrement - просто, но есть проблемы при создании новых записей во View из 2-х таблиц источников. Если такое не используешь, то делай через поля

2) Специальная служебная таблица, хранящая значение последнего использованного (первого не использованного) кода. Дополнительная функция как Default ключевого поля. Относительно сложное решение, но универсальное, поскольку не завящона напрямую с фактом создания новой записи (смотри примеры формы NewId.scx в проекте Solution.pjx)
...
Рейтинг: 0 / 0
30.08.2004, 16:43
    #32671752
sar99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
счетчик уникального id
ДОБРЫЙ ДЕНЬ.
КОНЕЧНО ВСЕ ЗАВИСИТ ОТ КОНКРЕТНОЙ СИТУАЦИИ!
ЕСЛИ ВАША БАЗА - ВНЕШНЯЯ ПО ОТНОШЕНИЮ К VFP
ТО НЕОБХОДИМО ИСПОЛЬЗОВАТЬ АВТО-МЕХАНИЗМ ПРИСВОЕНИЯ
УНИКАЛЬНЫХ ID ЭТОЙ БАЗЫ (В INTERBASE НАПРИМЕР ДЛЯ ЭТОГО ЕСТЬ
ГЕНЕРАТОРЫ )
А В РОДНОЙ БАЗЕ (НАПРИМЕР В VFP6 НЕТ ТИПА ПОЛЯ INTEGER АUTOINCR)
ЕСЛИ ТОЛЬКО ОДНА ВАША МНОГОПОЛЬЭОВАТЕЛЬСКАЯ ЗАДАЧА ОБНОВЛЯЕТ
ДАННЫЕ МОЖНО ПРИМЕНИТЬ СХЕМУ:

SELECT <ALIAS>
SET ORDER TO (ПО ВАШЕМУ КЛЮЧУ)
VVV=FLOCK()
IF VVV=.T.
GO BOTTOM
VKLUCH=KLUCH+1
*** ДАЛЕЕ ВСТАВКА ЗАПИСИ INSERT INTO
ELSE
*СООБЩЕНИЕ
ENDIF
UNLOCK IN <ALIAS>
ЕСТЕСТВЕННО ВНУТРИ ЭТОЙ КОНСТРУКЦИИ НЕЖЕЛАТЕЛЕН ДИАЛОГ -
ВСЕ НЕОБХОДИМО
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / счетчик уникального id / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]