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

sekv.niz brojeva - broj.dokumenta

[es] :: PostgreSQL :: sekv.niz brojeva - broj.dokumenta

[ Pregleda: 5027 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

novi_v_pgsql
inf.

Član broj: 307456
Poruke: 4
*.dynamic.isp.telekom.rs.



Profil

icon sekv.niz brojeva - broj.dokumenta04.10.2012. u 22:30 - pre 139 meseci
Nov sam na ovom forumu, kao i korišćenju PostGreSQL-a.
Pročitao sam jedan komentar,objašnjenje na http://arhiva.elitesecurity.or...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.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.dynamic.isp.telekom.rs.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: sekv.niz brojeva - broj.dokumenta25.10.2012. u 10:25 - pre 139 meseci
Sve navedene tačke se rade na aplikacionom nivou i nemaju puno veze sa PostgreSQL-om.
"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
 
Odgovor na temu

novi_v_pgsql
inf.

Član broj: 307456
Poruke: 4
*.dynamic.isp.telekom.rs.



Profil

icon Re: sekv.niz brojeva - broj.dokumenta06.12.2012. u 18:20 - pre 137 meseci
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?
 
Odgovor na temu

novi_v_pgsql
inf.

Član broj: 307456
Poruke: 4
*.dynamic.isp.telekom.rs.



Profil

icon Re: sekv.niz brojeva - broj.dokumenta25.04.2013. u 18:38 - pre 132 meseci
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.

 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
*.dynamic.sbb.rs.



+40 Profil

icon Re: sekv.niz brojeva - broj.dokumenta25.04.2013. u 19:17 - pre 132 meseci
http://www.postgresql.org/docs/9.0/static/sql-select.html

pa pogledaj "for update"

Poz. Goran
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

novi_v_pgsql
inf.

Član broj: 307456
Poruke: 4
*.dynamic.isp.telekom.rs.



Profil

icon Re: sekv.niz brojeva - broj.dokumenta27.04.2013. u 06:55 - pre 132 meseci
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?
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
*.dynamic.sbb.rs.



+40 Profil

icon Re: sekv.niz brojeva - broj.dokumenta27.04.2013. u 08:29 - pre 132 meseci
Da. Biće zaključano do komitovanja ili rolbeka.

Poz. Goran
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

[es] :: PostgreSQL :: sekv.niz brojeva - broj.dokumenta

[ Pregleda: 5027 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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