×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.2.3. Столбцы идентификации

Столбец идентификации — это специальный столбец, значения которого генерируются автоматически на основе неявной последовательности. Он может использоваться для генерации значений ключа.

Для создания столбца идентификации используется GENERATED ... AS IDENTITY в CREATE TABLE, например:

CREATE TABLE people (
    id bigint GENERATED ALWAYS AS IDENTITY,
    ...,
);

или

CREATE TABLE people (
    id bigint GENERATED BY DEFAULT AS IDENTITY,
    ...,
);

Дополнительные сведения см. в CREATE TABLE for more details.

Если INSERT выполняется для таблицы со столбцом идентификации и значение для этого столбца явно не указано, то вставляется значение, сгенерированное неявной последовательностью. Например, при использовании приведенных выше определений и наличии дополнительных соответствующих столбцов, выполнение команды

INSERT INTO people (name, address) VALUES ('A', 'foo');
INSERT INTO people (name, address) VALUES ('B', 'bar');

сгенерирует значения для id столбца, начиная с 1, что приведет к следующему состоянию данных в таблице:

 id | name | address
----+------+---------
  1 | A    | foo
  2 | B    | bar

В качестве альтернативы ключевое слово DEFAULT может быть указано вместо конкретного значения для явного запроса значения, генерируемого последовательностью, например:

INSERT INTO people (id, name, address) VALUES (DEFAULT, 'C', 'baz');

Аналогично, данное ключевое слово DEFAULT может быть использовано в UPDATE командах.

Таким образом, во многих отношениях столбец идентификации ведет себя как столбец со значением по умолчанию.

Предложения ALWAYS и BY DEFAULT в определении столбца определяют, каким образом обрабатываются значения, явно указанные пользователем в INSERT и UPDATE командах. В INSERT команде, если ALWAYS выбрано, значение, указанное пользователем, принимается только в том случае, если в INSERT инструкции указано OVERRIDING SYSTEM VALUE. Если BY DEFAULT выбрано, то значение, указанное пользователем, имеет приоритет. Таким образом, использование BY DEFAULT приводит к поведению, более похожему на использование значений по умолчанию, когда значение по умолчанию может быть переопределено явным значением, тогда как ALWAYS обеспечивает дополнительную защиту от случайной вставки явного значения.

Тип данных столбца идентификации должен быть одним из типов данных, поддерживаемых последовательностями. (См. CREATE SEQUENCE.) Свойства связанной последовательности могут быть указаны при создании столбца идентификации (см. CREATE TABLE) или изменены позже (см. ALTER TABLE).

Столбец идентификации автоматически помечается как NOT NULL. Однако столбец идентификации не гарантирует уникальность. (Последовательность обычно возвращает уникальные значения, но она может быть сброшена, либо значения могут быть вставлены в столбец идентификации вручную, как было сказано выше.) Уникальность должна обеспечиваться с помощью PRIMARY KEY или UNIQUE ограничения.

В иерархиях наследования таблиц столбцы идентификации и их свойства в дочерней таблице не зависят от свойств в её родительских таблицах. Дочерняя таблица не наследует столбцы идентификации или их свойства автоматически от родительского элемента. Во время INSERT или UPDATE, столбец рассматривается как столбец идентификации, если он является столбцом идентификации в таблице, указанной в команде, и тогда применяются соответствующие свойства идентификации.

Секции наследуют столбцы идентификации от секционированной таблицы. Они не могут иметь собственных столбцов идентификации. Свойства данного столбца идентификации одинаковы для всех секций в иерархии секционирования.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению