У меня есть проект данных весны jpa, который будет выполнять две транзакции (T1, T2) параллельно для записи данных в таблицу ниже:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`code` int(11) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8
T1 запишет имя столбца и код, а T2 запишет имя & возраст. Итак, я ожидаю, что если T1 появится первым, то sql для T1 будет:
insert into test (name, code) values (?, ?)
, и T2 обновит вставленную выше запись, используя update:
update test set age = ? where name = ?
если T2 приходит первым, то T2 будет вставлен и T1 обновится.
В весенних данных jpa присутствует метод save () для динамического добавления / обновления данных по умолчанию, но я не думаю, что это поможет В моем случае это может выдать два оператора вставки, если T1 и T2 вызывают save () одновременно.
Так есть ли способ справиться с этой ситуацией?