Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 8.494 pregleda

Najnovija ↓

sekv.niz brojeva - broj.dokumenta 04.10.2012. u 23:30 · pre 171 mesec #1
Nov sam na ovom forumu, kao i korišćenju PostGreSQL-a.
Pročitao sam jedan komentar,objašnjenje na https://www.elitesecurity.org/...ofiranje-oko-upisa-stavke-bazu ([ zoranix @ 05.01.2011.
21:24 ] @ ). Sasvim dobro objašnjenje.

Mene konkretno zanima onaj deo koji se odnosi na excl. zaključavanje tabele ("Totalna zaštita sleda ID je moguća ako baza podržava zaključavanje tabela (neke ovo ne podržavaju, pa treba videti u dokumentaciji...)
U tom slučaju si s programesrske strane opušteniji:")
. Da li može primer kako se u PostGreSQL-u excl.zaključava tabela (npr. tabela brojač)?
Posle je navedeno 5 tačaka, šta dalje i kako.

"Totalna zaštita sleda ID je moguća ako baza podržava zaključavanje tabela (neke ovo ne podržavaju, pa treba videti u dokumentaciji...). U tom slučaju si s programesrske strane opušteniji:
1. Pokreneš transakciju;
2. Pokušaš da zakljjučaš tabelu ekskluzivno, i ako ne uspeš vrtiš se u petlji dok ne uspeš. Ovo je momenat kada je već neko drugi zaključao tabelu iz istih razloga i ti ga čekaš u petlji dok on ne završi posao. Ovde je potrebno obezbediti kratko trajanje transakcije kako bi rad bio manje-više normalan (kod unosa podataka se to neće primetiti puno, ali kod masovnog insertovanja hoće i te kako).
3. Uspelo je zaključavanje, sada je tabela samo tvoja i ti insertuješ samo neophodne podatke u kolonama, čije obezbeđivanje ne traži puno vremena i koje si obavezan da imaš prilikom izvođenja INSERT naredbe, sa ID-om iz sekvenc-generatora.
4. Upis je uspešan, radiš COMMIT, ako nije saopštavaš grešku i radiš ROLLBACK.
5. Ažuriraš preostale kolone sa UPDATE sa ID-om iz sekvence koji si koristio kod INSERT-a.

Ovaj poslednji scenario garantovano ne pravi "rupice" u sledu brojeva i ja ga često koristim, a verujem da će i tebi koristiti."


Pretpostavljam da za INSERT bih koristio SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ; BEGIN;

Zamolio bih da mi napišete primer koji bi u PostGreSQL-u odradio tih 5 tačaka, sa excl.zaključavanjem tabele.

Npr.: Unosi se faktura. Imam neke npr. osnovne tabele (Dokumenti,Stavke,Brojac,Zalihe... ne bitno kako se zovu, suština je bitna).
Kroz formu unosim podatke o dokumentu, potom unesem stavke fakture i kliknem na dugme Snimi.
Kako izgleda primer za PostGreSQL, koji bi odradio onih 5 tačaka, kako se ne bi duplirao broj, kao i da ne nastane "rupa" u brojevima faktura.
Unapred Vam hvala na odgovoru i primeru.
Re: sekv.niz brojeva - broj.dokumenta 25.10.2012. u 11:25 · pre 170 meseci #2
Sve navedene tačke se rade na aplikacionom nivou i nemaju puno veze sa PostgreSQL-om.
Potpis
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Re: sekv.niz brojeva - broj.dokumenta 06.12.2012. u 19:20 · pre 169 meseci #3
Citat:
chachka: Sve navedene tačke se rade na aplikacionom nivou i nemaju puno veze sa PostgreSQL-om.

Dobro,a kako bih onda to rešio na serverskoj strani? Imate li neki primer?
Re: sekv.niz brojeva - broj.dokumenta 25.04.2013. u 19:38 · pre 164 meseca #4
Citat:
chachka: Sve navedene tačke se rade na aplikacionom nivou i nemaju puno veze sa PostgreSQL-om.

Citat:
novi_v_pgsql: Dobro,a kako bih onda to rešio na serverskoj strani? Imate li neki primer?
.

Zamolio bih da mi napišete primer koji bi u PostGreSQL-u odradio tih 5 tačaka (ili "deo" tih tačaka), sa excl.zaključavanjem tabele.

Re: sekv.niz brojeva - broj.dokumenta 27.04.2013. u 07:55 · pre 164 meseca #6
Citat:


Hvala ti Gorane, mislim da je to ono što mi treba.
Koliko vidim SELECT ... FOR UPDATE ... zaključava slog (npr. slog od tabele brojača) i on je nedostupan ostalim korisnicima, sve dok se ne završi transakcija.

Da li sam upravu?
Re: sekv.niz brojeva - broj.dokumenta 27.04.2013. u 09:29 · pre 164 meseca #7
Da. Biće zaključano do komitovanja ili rolbeka.

Poz. Goran
Potpis
JokeJunky :)

Mrzim sublimirane marketinske poruke.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme