Как вставить данные в таблицу с автоопредилением insert/update?

В PostgreSQL для вставки данных в таблицу с автоопределением значение каждого столбца, объявленного как серийный (serial) или большой серийный (bigserial), можно использовать команду INSERT.

Перед тем как приступить к вставке данных, необходимо создать таблицу, в которую вы хотите вставить данные. Вы можете указать столбцу тип serial или bigserial, чтобы он автоинкрементировался при каждой вставке новой записи. Например, вот как выглядит SQL-запрос для создания таблицы с одним столбцом, который автоматически определяется:

CREATE TABLE my_table (
    id serial PRIMARY KEY,
    name text
);

Теперь, когда у вас есть таблица, вы можете использовать команду INSERT для вставки данных. Когда вы выполняете вставку, пропускаете столбец с автоопределением, и система PostgreSQL автоматически присвоит ему правильное значение.

INSERT INTO my_table (name) VALUES ('John');

В этом примере мы вставляем новую запись в таблицу my_table. Значение для столбца id не указано, поскольку он автоопределяемый. PostgreSQL самостоятельно присваивает значение id новой записи.

Также возможно обновление данных в таблице с автоопределяемыми столбцами с помощью команды INSERT. Для этого используется ключевое слово ON CONFLICT. При вставке данных, если конфликтует ключевое поле (в данном случае id), вы можете указать, что делать с конфликтующими данными. Например:

INSERT INTO my_table (id, name) VALUES (1, 'John')
ON CONFLICT (id) DO UPDATE SET name = excluded.name;

В этом примере мы пытаемся вставить новую запись с идентификатором 1 и именем "John" в таблицу my_table. Если запись с таким идентификатором уже существует, PostgreSQL выполнит обновление значения имени на "John".