Была создана специальная последовательность, генерирующая только четные числа, с названием even_sequence. Что нужно подставить на место пропуска [...], чтобы в случае, если значение even_column не было указано при вставке, значение бралось из even_sequence?

Правильный вариант для того, чтобы при вставке значения в столбец evencolumn по умолчанию бралось следующее значение из последовательности evensequence — это использовать конструкцию с DEFAULT и функцией nextval:

Короткий ответ

Что ответить на собеседовании

Правильный вариант для того, чтобы при вставке значения в столбец evencolumn по умолчанию бралось следующее значение из последовательности evensequence — это использовать конструкцию с DEFAULT и функцией nextval:

Подробный разбор

Ответ с пояснениями

Условие

Была создана специальная последовательность, генерирующая только четные числа, с названием even_sequence. Что нужно подставить на место пропуска [...], чтобы в случае, если значение even_column не было указано при вставке, значение бралось из even_sequence?

create table some_table( even_column [...] );

integer computed as nextval('even_sequence')

integer generated always as identity (start with 2 increment by 2)

integer default nextval('even_sequence')

integer unique default nextval('even_sequence')

integer generated by even_sequence’

Ответ

Правильный вариант для того, чтобы при вставке значения в столбец even_column по умолчанию бралось следующее значение из последовательности even_sequence — это использовать конструкцию с DEFAULT и функцией nextval:

create table some_table(
    even_column integer default nextval('even_sequence')
);

Объяснение:

  • integer computed as nextval('even_sequence') — синтаксис не поддерживается в PostgreSQL.
  • integer generated always as identity (start with 2 increment by 2) — создаёт собственную последовательность, но не связан с even_sequence.
  • integer unique default nextval('even_sequence') — тоже корректно, но уникальность зависит от требований, не обязательна для генерации.
  • integer generated by even_sequence — такого синтаксиса нет.

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

integer default nextval('even_sequence')

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку