Ошибка при генерации id

Когда я сохраняю данные, оставляю id пустым, чтобы pgAdmin заполнил их сам. После этого выходит ошибка:

Column "id" is an identity column defined as generated always.cannot insert a non -DEFAULT value into column "id"

ошибка


Ответы (2 шт):

Автор решения: Tigran Grigoryan

Установите id primary key, serial. После чего во время добавления строки добавляйте следующим образом.

INSERT INTO table(completed,task_date ...) VALUES(value,value ...)

Надеюсь ответ порешит вашу проблему. Если нет, дайте побольше информации.

→ Ссылка
Автор решения: Roman C

Для таблицы, у которой в поле id стоит GENERATED ALWAYS, это поле вообще не должно использоваться при добавлении новой записи с помощью INSERT. А у вас оно используется при добавлении через программу. Попробуйте вставить DEFAULT значение, если это возможно.

5.3 Identity Columns

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

→ Ссылка