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

Pitanje u vezi MySQL-a

[es] :: MySQL :: Pitanje u vezi MySQL-a

[ Pregleda: 2471 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

batalule

Član broj: 39086
Poruke: 104
213.244.221.*



Profil

icon Pitanje u vezi MySQL-a15.12.2004. u 09:09

Imam neku tabelu u koju radim INSERT. Imam polje `Id` koje je UNIQUE Autoincrement i u njega ne upisujem vrednost vec to uradi sam MySQL. Medjutim sada mi treba vrednost tog polja nakon sto uradim INSERT. Jel ima neka fja u MySQL koja ce mi dati vrednost poslednjeg upisanog Id-ja?
thx
15.12.2004. u 09:09 

Mihailo
Mihailo Đorić

Član broj: 1016
Poruke: 2875
*.air.tehnicom.net.



Profil

icon Re: Pitanje u vezi MySQL-a15.12.2004. u 10:43
SELECT MAX(id) from ime_tabele;
15.12.2004. u 10:43 

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



Profil

icon Re: Pitanje u vezi MySQL-a15.12.2004. u 11:09
Laptopovi

MySQL ima SQL funkciju LAST_INSERT_ID() koju mozes korsititi u sledecim SQL komandma. Detalje imas u uputstvu.
15.12.2004. u 11:09 

Damjan S. Vujnovic
London, UK

Član broj: 30444
Poruke: 81
*.ceetel.co.yu.

Jabber: damjan@elitesecurity.org
ICQ: 68189289
Sajt: www.javasvet.net


Profil

icon Re: Pitanje u vezi MySQL-a15.12.2004. u 11:11
Koristi LAST_INSERT_ID(), max(id) je sporije i (moze da) ne radi u slucaju da postoji vise istovremenih konekcija.

D.
I love the smell of copyright violations in the morning. Smells like... freedom!
15.12.2004. u 11:11 

Mihailo
Mihailo Đorić

Član broj: 1016
Poruke: 2875
*.air.tehnicom.net.



Profil

icon Re: Pitanje u vezi MySQL-a15.12.2004. u 11:27
Ok, možda je brže LAST_INSERT_ID, iako mislim da je sigurnije SELECT(MAX) u ovom slučaju. Sećam se da je LAST_INSRT_ID imao čudne tripove kada se obriše poslednji red, no možda je to sada isrpavljeno. Ali odakle ti ideja da SELECT(MAX) neće raditi kada ima više konekcija?
15.12.2004. u 11:27 

Damjan S. Vujnovic
London, UK

Član broj: 30444
Poruke: 81
*.ceetel.co.yu.

Jabber: damjan@elitesecurity.org
ICQ: 68189289
Sajt: www.javasvet.net


Profil

icon Re: Pitanje u vezi MySQL-a15.12.2004. u 11:38
Jedini nacin da se to natera da radi ispravno u slucaju vise simultanih konekcija je da se koriste transakcije, sto znaci koriscenje tabela koje podrzavaju transakcije (InnoDB), sto znaci pefrofmance issue. Sa druge strane LAST_INSERT_ID() radi ispravno za bilo koji tip tabela (pa i za one "brze" kao sto je MyISAM) i u slucaju vise simultanih konekcija.

Btw, argument sa brisanjem poslednjeg reda ne stoji (mada je LAST_INSERT_ID() oduvek ispravno radilo tacno ono sto pise u dokumentaciji) posto je OP pitao kako da dodje do vrednosti autoincrement polja torke koju je neposredno pre toga insertovao.

D.
I love the smell of copyright violations in the morning. Smells like... freedom!
15.12.2004. u 11:38 

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at.

Sajt: www.baze-podataka.net


Profil

icon Re: Pitanje u vezi MySQL-a15.12.2004. u 16:09
Citat:
Mihailo:  Ali odakle ti ideja da SELECT(MAX) neće raditi kada ima više konekcija?
vjerovatno je mislio na situaciju kad imas vise istovremenih konekcija i insertovanja u tabelu, pa onaj ko zeli da sazna last inserted id dobije MAX(id) od nekog drugog korisnika, koji je 0.001 sekundu kasnije insertovao nesto.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
15.12.2004. u 16:09 

[es] :: MySQL :: Pitanje u vezi MySQL-a

[ Pregleda: 2471 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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