I'm using upserts... The reason I'm using upserts is basically just lazyness because I didn't feel like refactoring the source code to work around requiring upserts. Also, I'm not very confident in C++ so I did not want to take on that task.
IF record EXISTS then UPDATE else INSERT
I think all database applications should be written like this at least until performance starts being an issue.
Yet Another problem is that you need to enforce all sessions potentially involved in a data race need to use serializable; that can be easy or hard, depending on the scenario.
Increasing the transaction isolation level shouldn't be done out of laziness.