Jump to content

Автонумерация

AutoNumber — это тип данных , используемый в таблицах Microsoft Access для создания автоматически увеличивающегося числового счетчика. Его можно использовать для создания столбца идентификаторов , который однозначно идентифицирует каждую запись таблицы. В каждой таблице допускается только один автонумер.

В Access 2.0 тип данных назывался Counter. [ 1 ]

Существует три формы создания автонумераций: [ 2 ]

начальное значение плюс приращение
Автонумерации, создаваемые этим механизмом, начинаются с начального номера и увеличиваются на значение приращения, проверяя на предмет коллизий с существующими строками таблицы. [ 2 ]
случайный
Автонумерации, сгенерированные этим механизмом, назначаются с помощью генератора псевдослучайных чисел , который генерирует длинные целые числа и проверяет наличие коллизий с существующими строками таблицы. [ 2 ]
идентификаторы репликации
Автонумерации, генерируемые этим механизмом, представляют собой идентификаторы, созданные таким образом, чтобы исключить возникновение коллизий. [ 2 ] Это глобальные уникальные идентификаторы Microsoft , и вероятность столкновения невелика до 3400 года нашей эры. [ 3 ]

Размер AutoNumber по умолчанию — 4-байтовое (длинное) целое число. Это размер, используемый для начала + приращения и случайных автонумераций. Для идентификаторов репликации AutoNumbers FieldSize свойство поля изменено с длинного целого на Replication ID. [ 2 ]

Если AutoNumber является длинным целым числом, NewValues Свойство определяет, имеет ли оно форму start+increment или случайную форму. Значения, которые может принимать это свойство: «Приращение» и «Случайное». [ 4 ]

Использовать

[ редактировать ]

Типом автонумерации по умолчанию является счетчик «начало+приращение» с начальным значением 1 и шагом 1. Хотя во многих случаях такое поле автонумерации будет выглядеть так, как если бы оно содержало количество строк, на самом деле это не так. Например, удаление строк из таблицы не приводит к перенумерации полей AutoNumber, а оставляет «дыры» в нумерации. Аналогично, если транзакция по добавлению строки в таблицу начата, но позже прервана, автонумер, назначенный для этой строки, не будет использоваться повторно. [ 2 ]

Форма start+increment по умолчанию с начальным значением 1 и шагом 1 подходит не для всех обстоятельств. Есть причины выбирать каждую форму и есть компромиссы при этом. [ 2 ]

Значения начала и приращения по умолчанию могут раскрывать информацию о таблице, которую желательно не раскрывать людям, просматривающим отдельные строки таблицы. Например, использование поля AutoNumber для идентификатора клиента может раскрыть информацию, которую желательно не раскрывать, скажем, клиенту номер 6. Это один из примеров случая, когда начальное значение поля AutoNumber увеличивается, так что номер клиента 6 имеет, скажем, значение поля AutoNumber 10006. [ 2 ]

Использование случайных значений желательно в тех случаях, когда было бы неудачно угадать следующие значения, присвоенные новым строкам в таблице. Однако такое использование встречается редко. [ 2 ]

Распространенная проблема с полями автонумерации возникает, если таблицы реплицируются. Если несколько пользователей используют несколько реплик таблицы, то вполне вероятно, что они в конечном итоге назначат одни и те же значения полям автонумерации в новых добавляемых строках, что приведет к конфликтам репликации при объединении реплик. [ 2 ]

Эта проблема решается двумя способами. Во-первых, для таких автонумераций можно использовать идентификаторы репликации. [ 2 ] Такие идентификаторы репликации, являющиеся GUID, будут уникальными для всех реплик с низкой вероятностью коллизий. [ 3 ] Во-вторых, когда Access создает реплики таблицы, он автоматически меняет автономера формы «начало+приращение» на случайную форму. [ 4 ]

Манипулирование счетчиками с помощью DDL

[ редактировать ]

Следующий запрос языка определения данных (DDL) создает поле AutoNumber с начальным значением и приращением:

CREATE TABLE Table1 (
    Field1 COUNTER ([beginning_number], [increment_number]),
    [...]
);

Этот запрос сбрасывает счетчик:

ALTER TABLE Table1
ALTER COLUMN Field1 COUNTER(beginning_number, increment_number);

Альтернативный метод сброса счетчика — удалить столбец и повторно добавить его (это имеет побочный эффект перенумерации существующих строк в таблице):

ALTER TABLE Table1 DROP COLUMN Field1;
ALTER TABLE Table1 ADD Field1 COUNTER;
  1. ^ Прага, Кэри и Майкл Ирвин. Доступ к Библии 2002 года . Нью-Йорк: Wiley Publishing, Inc., с. 109.
  2. ^ Перейти обратно: а б с д и ж г час я дж к Крис Гровер; Мэтью Макдональд и Эмили А. Вандер Вир (2007). Office 2007: недостающее руководство . О'Рейли. стр. 636–638. ISBN  9780596514228 .
  3. ^ Перейти обратно: а б Майкрософт (9 января 2006 г.). «KBID 170117: Как использовать поля GUID в Access из Visual C++» . База знаний Майкрософт . Майкрософт.
  4. ^ Перейти обратно: а б Майкрософт (2009). «Справочник по Microsoft Access Visual Basic: свойство NewValues» . MSDN . Майкрософт . Проверено 5 июля 2009 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 635db96785d0173e3453961a0169a00b__1687777080
URL1:https://arc.ask3.ru/arc/aa/63/0b/635db96785d0173e3453961a0169a00b.html
Заголовок, (Title) документа по адресу, URL1:
AutoNumber - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)