I've got a Postgres ORDER BY issue with the following table:
em_code name
EM001 AAA
EM999 BBB
EM1000 CCC
To insert a new record to the table,
- I select the last record with
SELECT * FROM employees ORDER BY em_code DESC - Strip alphabets from em_code usiging reg exp and store in
ec_alpha - Cast the remating part to integer
ec_num - Increment by one
ec_num++ - Pad with sufficient zeors and prefix
ec_alphaagain
When em_code reaches EM1000, the above algorithm fails.
First step will return EM999 instead EM1000 and it will again generate EM1000 as new em_code, breaking the unique key constraint.
Any idea how to select EM1000?