in reply to Finding the next avaliable id in a SQLite database

Definitely learn to think in terms of inserting the record and asking the database what ID was assigned. Don't try to "predict" what the "next" ID will be.

This misconception spawns what people call a "race condition." That's when two separate processes are generating results independently, but there are some tasks which should have been centrally coordinated to avoid mistakes or duplication.

If written the wrong way, your program will crash in flames or introduce very subtle bugs, depending on which database engine or even how many CPUs your machine has. What's worse is that the first few times you run it, it will appear to work perfectly fine... but then start flaking out as soon as you forget about the issue.

--
[ e d @ h a l l e y . c c ]

  • Comment on Re: Finding the next avaliable id in a SQLite database