Dugo vremena sam (još iz doba dBase-a) radio sa generiranjem ključa po principu npr: poduzece+skladiste+tipdokumenta+desc(brdokumenta), dakle što i ti spominješ: po descend indexu polja, pa ga pročitaš i redložiš i pokušaš upisati ako ga već netko nije iskoristio. U eri BDE+Paradox s obzirom da nije imao generatore, bacio sam se na tablicu koja je glumila generatore i koju sam lockao po userima i poljima i inkrementirao u OnNewRecord eventu dataseta. Taj pristup mi na terenu također besprijekorno funkcionira već godinama. Odkako sam zapeo za IB, a potom Firebird i počeo koristiti generatore dosta toga sam prebacio na generatore.
Sad sam u nekom "presjeku" po kojem mi je za sve matišne podatke (šifrante) najpametniji pk dobiven kroz generatore. S obzirom da mi tablice imaju složene primarne ključeve tipa poduzeće+skladište+tip_dokumenta+datum+rbr_dokumenta (logički predstavljleno), tada mi nema smisla koristiti generator pod poljem rbr_dokumenta jer z svakom poduzeću, na svakom skladišu i svakom tipu dokumenta dokumenti trebaju ići u nizu. Jedino kad bi u triggeru ovisno o vrsti dokumenta, skladištu i poduzeću pozivao jedan od npr. tri generatora po tablici. No to mi se čini nepotrebnim kompliciranjem. Zato mislim da je najpametniji izbor ponuditi neki broj iz desc. indexa, inkrementirati ga i ponuditi na upis. U nekim programima sam viđao riješenje gdje se generira neka šablona tj. prefix za određenog korisnika, skladište, org. jedinicu i sl. pa znaš da ti jedna trgovina ima sve dokumente počevši od 100000, druga od 300000 i sl. Mislim da ću u budućnosti kristiti taj pristup.
Interesiralo me ovo sa neprekinutim nizom, dakle da se ne može ispustiti ni jedan broj u nizu, što mi je recimo vrlo važno npr. u knjigama URA, IRA.
Slaže li se itko s mojim razmišljanjem ?
God is real unless is declared as integer.