Вставьте запись, если она не повторяется, в этом случае измените уникальное значение ключевого столбца и вставьте - PullRequest
0 голосов
/ 03 мая 2019

У меня есть приложение Spring-Boot, использующее Spring JdbcTemplate для выполнения обновления базы данных в базе данных MySql.

В приложении у меня есть таблица с уникальным индексом, состоящим из нескольких столбцов, например

UserId,
Start_Date,
End_Date,
Sequence_Id

Я пытаюсь вставить запись в таблицу, однако, возможно, что запись уже существует, но с другим статусом, например, "отменено" и / или "снят" .

В этом случае я хочу вставить запись как новую запись (не обновление), но с увеличенным Sequence_Id.

Итак, если в таблице существует следующая запись:

UserId    | Start_Date    | End_Date    | Sequence_Id   | Status
1         | 01-01-2019    | 01-02-2019  | 1             | C

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

1         | 01-01-2019    | 01-02-2019  | 2             | A

Я ищу наиболее эффективный способ сделать это.Таким образом, если, например, две записи уже существуют, то Sequence_Id новой записи необходимо изменить на 3, а затем вставить.

В подавляющем большинстве случаев будет только одна запись итак что Sequence_Id будет 1 в более чем 90% случаев.Однако возможно (редко, но не невозможно), что может быть 2,3 или более записей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...