We also face problems with auto-incrementation because we need it to work within a specified range of numbers like 1000-9999.
At the moment we have a bad workaround which really is a scuffed auto incrementation implemented by ourselfs. It looks like this:
How would one use auto-incrementation within a specified range?
I appreciate any help!
a
Andrew O'Hara
03/16/2023, 6:34 PM
You might have to just look up the latest row and increment off of that. But then you have to perform some sort of lock, or face the potential for race conditions.
Or there might be some stored procedures you can use at the database level to generate the id. This wouldn't be handled by Exposed.
w
Wxffel
03/16/2023, 6:41 PM
We already pretty much do that with
1000 + Customer.count() + 1
and the check
check { it.between(1000, 9999) }
acts as the lock.
I thought there would be a safer overall better solution by exposed 😕
a
Andrew O'Hara
03/16/2023, 7:22 PM
That solution is susceptible to collision if a row is deleted, and is still susceptible to a race condition when two rows are being added at the same time (provided you don't have a locking mechanism)