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

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

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

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

2) Специальная служебная таблица, хранящая значение последнего использованного (первого не использованного) кода. Дополнительная функция как Default ключевого поля. Относительно сложное решение, но универсальное, поскольку не завящона напрямую с фактом создания новой записи (смотри примеры формы NewId.scx в проекте Solution.pjx)
...
Рейтинг: 0 / 0
счетчик уникального id
    #32671752
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДОБРЫЙ ДЕНЬ.
КОНЕЧНО ВСЕ ЗАВИСИТ ОТ КОНКРЕТНОЙ СИТУАЦИИ!
ЕСЛИ ВАША БАЗА - ВНЕШНЯЯ ПО ОТНОШЕНИЮ К 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
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / счетчик уникального id
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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