Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Использование автоинкрементного поля  [new]
LVadim
Member [заблокирован]

Откуда:
Сообщений: 196
Создал таблицу с автоинкрементным полем. Сначало все работало Ok. Затем была реструктизация таблица (добавились поля) и после этого при добавлении новой записи счетчик не увеличивается, заносится 0 и все. Пробавал реиндексировать, переназначать тип и т.д. Что делать, неужели как раньше заводить отдельную таблицу для счетчиков? Помогите!
14 дек 04, 13:40    [1179635]     Ответить | Цитировать Сообщить модератору
 Re: Использование автоинкрементного поля  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi LVadim!

Видимо как-то неправильно вы "реструктуризацию" провели :) Восстанови
атрибуты этого поля (заново укажи что оно AUTOINC, укажи шаг приращения и
новое начальное значение).
неужели как раньше заводить отдельную таблицу для счетчиков?

Кстати далеко не самый плохой вариант - я вообще не пользуюсь AUTOINC по
ряду причин, и ничего :)

Posted via ActualForum NNTP Server 1.1

18 дек 04, 23:53    [1191412]     Ответить | Цитировать Сообщить модератору
 Re: Использование автоинкрементного поля  [new]
Urri
Member

Откуда: Москва
Сообщений: 2693
Hi Igor!

А не мог бы ты тезисно, сильно не углубляясь, изложить причины, по которым не следует использовать Autoinc?
Я только одну чувствую - что таблицы с Autoinc-ключом тяжелее будет лечить после хорошего сбоя. И то не уверен, что нельзя придумать простые методы проверки и накручивания счетчика.
19 дек 04, 00:42    [1191450]     Ответить | Цитировать Сообщить модератору
 Re: Использование автоинкрементного поля  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Urri
Hi Igor!
А не мог бы ты тезисно, сильно не углубляясь, изложить причины, по которым не следует использовать Autoinc?
Я только одну чувствую - что таблицы с Autoinc-ключом тяжелее будет лечить после хорошего сбоя. И то не уверен, что нельзя придумать простые методы проверки и накручивания счетчика.


Это и я могу изложить. Даже не тезисно

Основная пороблема использования AutoInc - это то, что его значение невозможно узнать до того, как будет создана новая запись. Все!

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

В частности, например, лечение при повреждении структуры абсолютно одинаковое: определяем максимальное значение ключа и корректируем либо начальное значение в AutoInc, либо значение в служебной таблице для NewID()

Если используются обычные DBF-таблицы, то узнать новое значение AutoInc до физического создания новой записи можно, если наложить на таблицу-источник режим буферизации. Запись будет создана в буфере, из которого можно считать новое значение. Но это предполагает принципиально другой подход к стилю программирования.
19 дек 04, 13:02    [1191644]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить