База данных Postgresql.Для упрощенного примера я вставлю данные измерений в различные таблицы.Пример DDL для одного примера таблицы выглядит следующим образом:
CREATE TABLE
measurement
(
id_meas BIGINT NOT NULL,
...
PRIMARY KEY (id_meas)
);
Процесс вставки данных в настоящее время работает следующим образом:
- Выбор максимального значения идентификатора из таблицы
- Значение идентификатора приращения
- Вставить следующую строку данных, используя увеличенное значение идентификатора
Это работает, если только один клиент вставляет данные.Но что, если имеется> 1 клиент для вставки, так что два клиента могут выбрать 567 в качестве значения максимального идентификатора и оба увеличить это значение до 568 в качестве следующего значения идентификатора для вставки.В этом случае второй клиент, выполняющий команду вставки, получит ошибку дублированного ключа.Есть ли способ предотвратить эти ошибки, кроме повторного выполнения процесса вставки после возникновения ошибки?