Originally posted by nemonoman
Actually there's a much simpler reason: DELETE/INSERT is always guaranteed to work. You don't need to code a test to check whether you need to update or insert. You just DELETE -- if the id doesn't exist, there's no harm done -- then INSERT. It's the quick and dirty method.
Well, yes if the question was about INSERT, but it was not. (even if it were then this would still be out of date as REPLACE or ON DUPLICATE KEY UPDATE handle this).
The question was, I believe, about whether to handle user's UPDATEs of existing records that way as well. It is not just a quick-and-dirty fix for webnerds who don't know how to do client-server databases properly. It is for instance a very valid strategy for eg an airline booking system where many people could be viewing available seats and trying to book the same ones at the same time. And of course it creates its own set of problems as Lars points out.
I am not saying that I recomend it, just that at one time it was a regularly used strategy when all remote links were extremely slow, think 2Kb WAN links in the 70s or 14Kb dail-up in the 80s.
Personally, I have always used other forms of transaction queuing and integrity checking. Ah! So that's what the timestamp column type is for 😃