Создание столбцов идентификаторов
Таблицы базы данных могут содержать столбцы, в которые при добавлении новой записи в таблицу будут автоматически записываться порядковые номера. Такие столбцы называются идентификаторами или счетчиками и обычно используются в качестве первичных ключей. Таблица может содержать только один столбец идентификатор.
Столбцы идентификаторы ведут себя следующим образом.
- Добавление пустого значения в столбец идентификатор приведет к добавлению в данном столбце следующего по счету номера в новой строке.
- При добавлении новой записи с явно указанным значением в столбце идентификаторе произойдет одно из двух. Если запись с таким значением уже в таблице существует, генерируется сообщение об ошибке, так как значения в этом столбце должны быть уникальны. Если строка с таким значением отсутствует, новое значение станет новым максимумом последовательности.
- Значения в автоматически генерируемых последовательностях являются строго возрастающими и не могут использоваться повторно. Если текущее максимальное значение составляет 143 и запись, содержащая это значение, была удалена, следующее генерируемое значение будет 144.
- Диапазон значений столбца идентификатора подчиняется законам диапазона значений для типа, с которым объявлен данный столбец. Например, столбец типа TINYINT UNSIGNED будет иметь максимальное значение 255. По достижению этого значения счетчиком, будет выдаваться сообщение об ошибке "повторение ключа" ("duplicate error").
MS SQL Server
В MS SQL Server столбец идентификатор создается с помощью атрибута IDENTITY в описании столбца:
column_definition ::=
column_name
MySQL Server
MySQL Server поле-счетчик создается с помощью атрибута AUTO_INCREMENТ в описании столбца:
column_defenition::=
col_name data_type [NOT NULL | NULL] [DEFAULT default_value]
AUTO_INCREMENT
Столбец должен быть объявлен как NOT NULL и UNSIGNED, а также быть либо первичным ключом либо уникальным индксом.
Существует возможность явного задания начального значения последовательности в момент создания таблицы. Пример создания столбца AUTO_INCREMENT, начальное значение последовательности которой равно 1000000:
CREATE TABLE my_table
(id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY
KEY)
AUTOINCREMENT = 1000000