Tema: Re: unikalus įrašo numeris
Autorius: 2x50
Data: 2010-11-23 11:29:42
Sveiki,

as kaip duombazistas tai galeciau tik patarti isnaudoti visas dbvs siulomas 
galimybes. Jei dbvs turi transakciju valdymo mechanizma, tai reiketu ji ir 
panaudoti. Jei aplikacijoj vartotojo atliktas veiksmas sukuria irasa 3jose 
lentelese, tai visu siu irasu sukurimas turetu buti vienoje transakcijoje. 
Be to, pirmiausiai irasas turi buti sukurtas master lentoj, o tik veliau 
detail lentose, o ne atvikrsciai. Taip pat tos lentos turetu tureti PK ir FK 
constraint'us.
Del numeravimo is eiles, tai siulau tai pamirsti ir daugiau neprisiminti, 
ypac kai yra konkurentines transakcijos. Kodel?
2 paprasti klausimai.
Vartotojas V1 pradeda transakcija T1, jam priskiriamas numeriukas 1. Is 
karto po jo varototjas V2 pradeda transakcija T2 (kol T1 dar nera 
pasibaigus), kuriai priskiriamas numeris 2. Vartotojas V1 nutraukia 
transakcija T1. Pirmas klausimas - ka daryti su numeriu 2 transakcijoj T2?
Antras klausimas - ka daryti su numeravimu "is eiles" lenteleje, kai is jos 
irasas istrinamas?
Atsakius i siuos klausimus isvada turetu buti "jo, neverta terliotis"...
t.y. mano pasiulymas yra naudoti AutoIncrement (galima ir is savo lenteles, 
ner skirtumo) ir visus irasus visose susijusiose lentelese daryti tos pacios 
transakcijos metu...

"Anon" <anon@pisem.net> wrote in message 
news:icfrf5$av0$1@trimpas.omnitel.net...
> Na, turiu dar vieną klausimą iš Delphi + MySQL :)  Į lentelę įterpinėja 
> įrašus apie 20 vartotojų, įrašams reikalinga suteikti unikalų numerį, 
> kurie didėtų iš eilės, nuosekliai. AutoIncrement tipas netinka - dirbama 
> per cached updates, lockingas optimistinis, numeris reikalingas įrašyti į 
> kitas 3 lenteles prieš užfiksuojant pagrindinėje, o AutoIncrement'as 
> suveikia tik po komandos ApplyUpdates. Žodžiu, ar veiktų toks metodas: 
> atskiroje lentelėje laikomas 1 įrašas su vienu numerio lauku(pradžioj Nr 
> yra 0) , kuriantis pagr. lentelėje įrašą vartotojas užlockina lentelę su 
> numerio lauku, padidina numerį vienetu, pasiima jį ir nuima lockinimą. Tą 
> patį daro ir kiti. O gal čia aš dviratį išradinėju? IŠ anksto ačiū 
> patarusiems.
>
> Vytautas