AutoNumber - это тип данных, используемых в таблицах Microsoft Access для создания автоматически увеличивающегося числового счетчика. Его можно использовать для создания столбца идентификаторов, который однозначно идентифицирует каждую запись таблицы. В каждой таблице допускается только один AutoNumber.
Тип данных назывался Counter в Access 2.0. [1]
Есть три формы, в которых могут быть созданы AutoNumbers: [2]
По умолчанию размер AutoNumber - это 4-байтовое (длинное) целое число. Это размер, используемый для начального + инкремента и случайных автоматических чисел. Для идентификатора репликации AutoNumbers FieldSize
свойство поля изменяется с длинного целого на Replication 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) создает поле AutoNumber с начальным значением и приращением:
CREATE TABLE Table1 ( Field1 COUNTER ([ beginning_number ], [ increment_number ]), [...] );
Этот запрос сбрасывает счетчик:
ALTER TABLE Table1 ALTER COLUMN Field1 COUNTER ( начальное_число , инкрементное_число );
Альтернативный метод сброса счетчика - отбросить столбец и повторно добавить его (побочным эффектом этого является перенумерация существующих строк в таблице):
ALTER TABLE Table1 DROP COLUMN Field1 ; ALTER TABLE Table1 ADD Field1 COUNTER ;