Параллельная запись в БД с условно уникальным - PullRequest
1 голос
/ 28 января 2020

Я использую Spring-Boot, mysql и JDB C в моем приложении.

У меня есть таблица, как показано ниже

CREATE TABLE `post` (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
  `ref` varchar(255) DEFAULT '',
  `userId` bigint(20) NOT NULL,
  `text` varchar(255),
  `count` bigint(20) NOT NULL,
  `version` bigint(11) DEFAULT NULL
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

В этой таблице я иметь столбец count, который зависит от комбинации уникальных столбцов ref, userId и text, например. если комбинация этих столбцов отсутствует в БД, то счет будет равен 1, но если комбинация уже существует в БД, значение счетчика будет 0.

Я столкнулся с проблемой, когда два или более пользователи пытаются публиковать сообщения с одинаковыми ref, userId и text одновременно. Из этих запросов только один должен считаться равным нулю, а остальные равны нулю.

Как мне справиться с этим случаем, когда несколько пользователей пытаются опубликовать сообщения с одинаковыми значениями?

...