Подход SQL, вообще говоря, состоит в том, чтобы сделать (userid, primordial)
уникальным составным ключом и использовать оператор INSERT
с предложением ON DUPLICATE KEY UPDATE
, которое в противном случае устанавливает primordial
(но я признаю, что я Я не уверен, что произойдет, если UPDATE
также попадет в дубликат, как если бы вы вставили second non-primordial UserStuff
).
В качестве альтернативы, с соответствующим образом изолированными транзакциями, вы можете сначала SELECT
проверить, присутствует ли userid
, а затем внутри той же транзакции INSERT
с соответствующими значениями primordial
.
Подход SQL был бы более надежным, если бы у вас когда-либо были обновления от нескольких процессов (возможно, на разных клиентских узлах), но, возможно, если вы на 100% уверены, что этого никогда не произойдет, ваши идеи на основе Java-синхронизации могут повысить производительность. .. Я не буду угадывать так или иначе, но рекомендую вам измерять вещи обоими способами (, если вы готовы ставить свою рубашку никогда, никогда получать обновления от нескольких клиентов узлы, то есть; -).
`