Srodne teme
18.08.2001. error 2002:
09.01.2002. pomoc oko foruma
14.08.2002. MySql Probelem
21.10.2002. mysql na slacku
31.01.2003. MySQL i apache
21.01.2003. MySQL problem
28.07.2003. Perl & MySql
30.08.2003. RedHat 9 i PHP + MySQL
04.10.2003. php&mysql problem
05.04.2004. prelazak MySQL 3.23.52 -> MySQL 4
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

LAST_INSERT_ID() (MySql)

[es] :: MySQL :: LAST_INSERT_ID() (MySql)

[ Pregleda: 3654 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.net.yu

ICQ: 170738591


Profil

icon LAST_INSERT_ID() (MySql)30.10.2002. u 20:44

Koji je najlakši način da iz tabele slike "izvadim" poslednji upisani id, koji je primarni ključ, a njegova vrednost je jednaka poslednjem upisanom polju id iz neke druge tabele (npr. osoba)...

Kod za automatski unos id u tabelu slike je sledeći:

mysql_query ("INSERT INTO slike
(id, src, filename, filesize, filetype)
VALUES
(LAST_INSERT_ID(),'$data', '$src_name', '$src_size', '$src_type')
");

Znači id osoba i id slike su identični...
30.10.2002. u 20:44 

degojs

Član broj: 4716
Poruke: 5096
*.cpe.net.cable.rogers.com

Sajt: www.novetehnologije.com


Profil

icon Re: LAST_INSERT_ID() (MySql)30.10.2002. u 23:02
Ne znam bas za mySQL ali u SQL Serveru i Oracle moze da se pozove funkcija MAX(polje) da bi dobio poslednju vrednost pod uslovom da je polje identity (= auto increment, = auto number) ili da vrednosti u polju idu 'rastuci' redom (ili 'opadajuci' u kom slucaju koristis MIN(polje) ).

Nesto poput:
SELECT MAX(polje) FROM tabela ...itd.

Meni se cini da je, upravo zbog ovakvih stvari, uvek dobro imati polje koje je auto-increment da bude primary key u tabeli.


HTH

Commercial-Free !!!
30.10.2002. u 23:02 

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL Developer, Erst..
Vienna

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

Sajt: www.baze-podataka.net


Profil

icon Re: LAST_INSERT_ID() (MySql)01.11.2002. u 04:33
Citat:
goran33:
Koji je najlakši način da iz tabele slike "izvadim" poslednji upisani id, koji je primarni ključ, a njegova vrednost je jednaka poslednjem upisanom polju id iz neke druge tabele (npr. osoba)...

Kod za automatski unos id u tabelu slike je sledeći:

mysql_query ("INSERT INTO slike
(id, src, filename, filesize, filetype)
VALUES
(LAST_INSERT_ID(),'$data', '$src_name', '$src_size', '$src_type')
");

Znači id osoba i id slike su identični...


Zadnji uneseni id iz neke druge tabele mozes saznati zavisno o potrebi i nacinu na koji radis skriptu.
1. ako u istoj skripti vrsis unos i u tabelu osobe i u tabelu slike, onda zadnji uneseni id u tabeli osobe saznajes funkcijom mysql_insert_id()
2. - vjerovatno je pod jedan ono sta ti treba, ali ako nije, onda reci kako vrsis unos podataka, pa cu ti reci i drugi nacin -

Npr. za prvi nacin:
Preporucio bih ti da stavis auto_increment polje i stavis ga da bude primary.
Ako imas osim tog polja jos neka druga polja, npr.:
id, ime, godine
onda ovako unosis podatke:

$linkhandler = mysql_connect("localhost","user","pass") or die(mysql_error());
mysql_query("INSERT INTO osobe(ime,godine) VALUES('$ime','$godine')",$linkhandler);

Vrijednost za id ne moras navoditi, jer se automatski upisuje vrijednost zadnjeg unos povecan za 1.
Vrijednost ovog zadnjeg unosa saznajes funkcijom mysql_insert_id():

$zadnji_unos = mysql_insert_id($linkhandler);

i onda imas:
mysql_query("INSERT INTO slike(id, src, filename, filesize, filetype)
VALUES ('$zadnji_unos','$data', '$src_name', '$src_size', '$src_type')
",$linkhandler);

Valjda je to ono sta si trazio.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
01.11.2002. u 04:33 

Mihailo
Mihailo Đorić

Član broj: 1016
Poruke: 2873
*.verat.net



Profil

icon Re: LAST_INSERT_ID() (MySql)01.11.2002. u 11:38
Čemu tolika filozofija, postoji većina agregatnih funkcija (MIN, MAX, AVG, COUNT...) i kod MySQL-a.
01.11.2002. u 11:38 

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.net.yu

ICQ: 170738591


Profil

icon Re: LAST_INSERT_ID() (MySql)01.11.2002. u 16:20
Jeste... Prvi odgovor je sasvim dovoljan... select max(id), radi ok...
01.11.2002. u 16:20 

Riste Pejov
Team Leader/Senior Software Developer @ Ein-Sof ltd S..
Skopje, Macedonia

Član broj: 128
Poruke: 571
212.110.78.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: LAST_INSERT_ID() (MySql)05.11.2002. u 18:18
Da se koristi max(id) umesto LAST_INSERT_ID() ?!?!?!?!?!??!?!

Ovakvu ideju mozes dobiti samo od nekoga ko nema pojma o baze podataka.

Mislim da valjda neko ko je diskutirao ovo zna kako radi max(id),

razlika je sledeca:

kad koristis LAST_INSERT_ID() onda samo iz RAM memorije mysqld izbaci zadnji ID koji je generisao. Sto je najbolje resenje koje mozes pozeleti.

Ukoliko se odlucis za max() onda za istoj tabeli se pretrazuje binarno drvo indexa, sve dok se ne nadje najveci ID. Ukoliko je kolona ne-ndexirana, onda DB engine radi full scan.

Ukoliko ti explicitno ne treba najveca vrednost u koloni, onda izbegavaj max(), posebno kad je u pitanju UID kolona. Zamisli sta bi se desilo kad bi ta tabela stigla do 100K+ recorda.

Pozdrav, i bez uvreda za korisnika max()


People who think they know everything tend to irritate those of us who do.
05.11.2002. u 18:18 

Mihailo
Mihailo Đorić

Član broj: 1016
Poruke: 2873
*.verat.net



Profil

icon Re: LAST_INSERT_ID() (MySql)05.11.2002. u 18:43
Moja je greška što temu nisam pročitao detaljno, pa sam samo napomenuo da i kod MySQL-a postoji MAX(). Naravno, LAST_INSERT_ID pod uslovom da je auto_increment, i to je najbolje rešenje. S druge strane, logično je index bude na toj koloni, i u tom slučaj MAX() radi posao dobro.
05.11.2002. u 18:43 

degojs

Član broj: 4716
Poruke: 5096
*.cpe.net.cable.rogers.com

Sajt: www.novetehnologije.com


Profil

icon Re: LAST_INSERT_ID() (MySql)06.11.2002. u 02:32
Riste, ja sam napomenuo da ne radim sa mySQL-om tako da mu specificno resenje koje se koristi na SQL Serveru nisam ni predocavao. Nisam ni krio da nista ne znam o MySQL cak sam to i istakao. Jednostavno, dao sam nesto sto bi moglo da radi na sve tri baze -- bez ikakve iluzije da je to najbolje resenje i da neko nece predociti nesto sto je mnogo bolje.
Ne vidim razlog da se uzbudjujes :-) Svakako, tvoj odgovor je i za mene prilika da naucim nesto o toj bazi.

Pozdrav
Commercial-Free !!!
06.11.2002. u 02:32 

[es] :: MySQL :: LAST_INSERT_ID() (MySql)

[ Pregleda: 3654 | Odgovora: 7 ]

Postavi temu Odgovori

Srodne teme
18.08.2001. error 2002:
09.01.2002. pomoc oko foruma
14.08.2002. MySql Probelem
21.10.2002. mysql na slacku
31.01.2003. MySQL i apache
21.01.2003. MySQL problem
28.07.2003. Perl & MySql
30.08.2003. RedHat 9 i PHP + MySQL
04.10.2003. php&mysql problem
05.04.2004. prelazak MySQL 3.23.52 -> MySQL 4
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.