interbase id's als 'PFX0000001' laten genereren

Pagina: 1
Acties:

  • Hardcell
  • Registratie: November 2004
  • Laatst online: 03-02-2023
Hoi,

Ik zit hier al een hele tijd te proberen om in interbase geregeld te krijgen dat hij id's aanmaakt als 'PFX0000001', 'PFX0000002' maar dit blijkt nogal lastig.
Tot hier ben ik gekomen:

- Ik heb de freeudflib geinstalleerd zodat ik een stringlength en een linewrap functie heb. stringlenght spreekt voor zich neem k aan, linewrap kan als een substring-functie gezien worden.

- Ik heb een generator toegevoegd, g_next_id.

- Vervolgens bouw ik alsvolgt een view:
Code:

create view v_next_id (next_id) as select 'PFX' || linewrap('000000', 0, 7 - stringlength(gen_id(g_next_id, 1))) || gen_id(g_next_id, 1)


Je ziet het probleem waarschijnlijk al, ik moet nu 2x die gen_id functie aanroepen omdat ik eerst de lengte van het gegenereerde id nodig heb om het aantal leading zero's te bepalen.
Ik dacht het met een select as statement op te lossen maar dit werkte ook niet..

Any suggestions?

  • Hardcell
  • Registratie: November 2004
  • Laatst online: 03-02-2023
Na nog es n uurtje staren naar dit probleem ben ik zelf al tot de volgende geniale oplossing gekomen:

create view v_next_id (next_id) as select 'PFX' || linewrap('000000', 0, 7 - stringlength(gen_id(g_next_id, 1))) || gen_id(g_next_id, 0) 8)7