Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Neprekinuti slijed identifikatora

[es] :: Firebird/Interbase :: Neprekinuti slijed identifikatora

[ Pregleda: 2766 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Neprekinuti slijed identifikatora06.05.2008. u 07:03 - pre 194 meseci
Generatori "žive" van transakcija. Pa ako neki upis unutar transakcije ne prođe, generator ostane iskorišten. Ukoliko u svakom slogu trebam neku identifikaciju (ne primarni ključ nego samo slog identifikacije npr. broj dokumenta) tu mi generatori nisu previše od koristi.

Koja je vaša praksa? Stvoriti jednu tablicu koja sadrži popis vrijednosti(brojača) po tablicama i pristupa joj se i locka je se kroz transakcije, a ona se svaki put inkrementira za 1 i sve se odradi kroz storanu proceduru, i inkrement, i vraćanje vrijednosti i sl. ?

No malo razmišljam... što će mi optimističko zaključavanje i sve mogućnosti različitih oblika transakcije kad mi ova karika usporava cijeli proces zbog tih brojača?
God is real unless is declared as integer.
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Neprekinuti slijed identifikatora07.05.2008. u 01:33 - pre 194 meseci
> Koja je vaša praksa? Stvoriti jednu tablicu koja sadrži popis vrijednosti(brojača) po tablicama i pristupa joj se i locka je se kroz transakcije, a
> ona se svaki put inkrementira za 1 i sve se odradi kroz storanu proceduru, i inkrement, i vraćanje vrijednosti i sl. ?

Zavisi da li korisnik može sam unositi/birati broj dokumenta ili ne? Ako ne može, onda broj dokumenta možeš dodeliti na kraju (pošto korisnik odabere upis u bazu) i za to možeš koristiti generator, posebnu tabelu ili DESC index po tom polju (saznaš poslednji uneti broj i povećaš za 1).
Ako korisnik ima slobodu izbora broja, onda mu ti možeš samo ponuditi broj, npr. saznaš najveći uneti (koristiš DESC index) i povećaš za 1.
Ako više korisnika istovremeno započne unos ponudiće im se isti brojevi. Broj dokumenta treba da ima i UNIQUE index i ako pokušaju upis dobiće grešku, tada im se prikazuje obaveštenje, nudi sledeći broj dokumenta i mogu ponovo potvrditi upis. Ako korisnik sam unese postojeći broj, primenjuje se isti mehanizam dok unos ne prođe.
 
Odgovor na temu

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Re: Neprekinuti slijed identifikatora08.05.2008. u 21:47 - pre 194 meseci
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.
 
Odgovor na temu

[es] :: Firebird/Interbase :: Neprekinuti slijed identifikatora

[ Pregleda: 2766 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.