AutoNumber - AutoNumber

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

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

Формы

Есть три формы, в которых могут быть созданы AutoNumbers:[2]

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

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

Если AutoNumber - длинное целое число, NewValues Свойство определяет, имеет ли он форму начало + приращение или случайную форму. Это свойство может принимать значения «Приращение» и «Случайно».[4]

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

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

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

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

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

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

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

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

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

СОЗДАЙТЕ СТОЛ Таблица 1 (   Поле1 ПРИЛАВОК ([начальное_число], [инкремент_число]),   [...]);

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

   ИЗМЕНИТЬ СТОЛ Таблица 1   ИЗМЕНИТЬ СТОЛБЕЦ Поле1 ПРИЛАВОК(начальное_число, инкремент_число);

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

   ИЗМЕНИТЬ СТОЛ Таблица 1 УРОНИТЬ СТОЛБЕЦ Поле1;   ИЗМЕНИТЬ СТОЛ Таблица 1 ДОБАВИТЬ Поле1 ПРИЛАВОК;

Рекомендации

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

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

внешняя ссылка