PostgreSQL, UM DURCH Problem - die Natürliche Art

Ich habe eine Postgres ORDER BY Problem mit der folgenden Tabelle:

em_code  name
EM001    AAA
EM999    BBB
EM1000   CCC

Einfügen einen neuen Datensatz in der Tabelle,

  1. Ich wählen Sie den letzten Datensatz mit SELECT * FROM employees ORDER BY em_code DESC
  2. Strip Alphabete von em_code usiging reg exp und speichern in ec_alpha
  3. Besetzung der Neuverknüpfung Teil zu integer ec_num
  4. Schrittweite von einem ec_num++
  5. Pad mit ausreichend zeors und Präfix ec_alpha wieder

Wenn em_code erreicht EM1000, den oben beschriebenen Algorithmus fehlschlägt.

Ersten Schritt zurück EM999 statt EM1000 und es wird wieder generieren EM1000 als neue em_code brechen der unique key-Einschränkung.

Keine Ahnung, wie zu wählen Sie EM1000?

  • Warum verwenden Sie nicht nur Folge?
  • Warum nicht eine Sequenz? postgresql.org/docs/current/static/sql-createsequence.html
  • Ach ein Klassiker. Regel eins für ein edvgestütztes Papier-Systeme, intelligente zahlen sind, sind dumm. setzen Sie em in einer Spalte ein Wert vom Typ int in die andere Sorte von beiden. Bauen Sie es wieder in eine id für die dummen Menschen, wenn Sie müssen.
  • Brandstetter Dank für die Bearbeitungen
  • Beachten Sie, dass der Ansatz, den Sie beschreiben, wird kläglich scheitern, wenn mehr als eine Transaktion gleichzeitig ist INSERTing, es sei denn, Sie LOCK TABLE ersten. Bezüglich der Art, vielleicht finden Sie diese Frage sehr informativ.
Schreibe einen Kommentar