Проблема с PostgreSQL ORDER BY - естественная сортировка

У меня проблема с Postgres ORDER BY со следующей таблицей:

em_code  name
EM001    AAA
EM999    BBB
EM1000   CCC

Чтобы вставить новую запись в таблицу,

  1. Я выбираю последнюю запись с помощью SELECT * FROM employees ORDER BY em_code DESC
  2. Вычеркиваю буквы из em_code с помощью reg exp и сохраняю в ec_alpha
  3. Привожу возвращаемую в целое число ec_num
  4. Увеличиваем на единицу ec_num++
  5. Вставляем достаточное количество зеоров и префикс ec_alpha снова

Когда em_code достигнет EM1000, вышеописанный алгоритм не работает.

Первый шаг вернет EM999 вместо EM1000 и снова сгенерирует EM1000 как новый em_code, нарушая ограничение уникального ключа.

Есть идеи, как выбрать EM1000?

14
задан Erwin Brandstetter 23 March 2012 в 20:53
поделиться