Автонумерация
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;
Ссылки
[ редактировать ]- ^ Прага, Кэри и Майкл Ирвин. Доступ к Библии 2002 года . Нью-Йорк: Wiley Publishing, Inc., с. 109.
- ^ Перейти обратно: а б с д и ж г час я дж к Крис Гровер; Мэтью Макдональд и Эмили А. Вандер Вир (2007). Office 2007: недостающее руководство . О'Рейли. стр. 636–638. ISBN 9780596514228 .
- ^ Перейти обратно: а б Майкрософт (9 января 2006 г.). «KBID 170117: Как использовать поля GUID в Access из Visual C++» . База знаний Майкрософт . Майкрософт.
- ^ Перейти обратно: а б Майкрософт (2009). «Справочник по Microsoft Access Visual Basic: свойство NewValues» . MSDN . Майкрософт . Проверено 5 июля 2009 г.
Дальнейшее чтение
[ редактировать ]- Майкрософт (2009). «Руководство разработчика .NET Framework: Получение значений идентификатора или автонумерации» . MSDN . Майкрософт . Проверено 5 июля 2009 г.