Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan lehet ezt? MySql,...

Hogyan lehet ezt? MySql, sorszámozás kategóriákon belül

Figyelt kérdés

példatábla: (kat, és posInKat a lényeg)

id, nev, kat, posInKat

1, Asd, 1, 1

2, afg, 1, 2

3, ghjd, 2, 1

4, agg, 1, 3

5, rgd, 1, 4

6, klk, 2, 2


Hogyan lehet ütközésmentesen insertelni a pozíciót(posInKat) kategórián(kat) belül?


Ha insert előtt lekérdezem hogy hányas az aktuális pozicio a kategórián belül, akkor a lekérdezés és beírás között eltelik egy idő, ha valami egyszerre írna be, lehetséges a duplikáció (megkaphatja ugyanazt a sorszámot)


Van egyszerűbb megoldás, vagy a begin commit-tal csináljam(ezzel ki van védve?) ?


Vagy valahogy máshogy kéne az egészet? Fórum(szerűt:) csinálok, egy kat-ban kéne megszámozni a postokat (a válaszolás miatt (meg hogy #1 után ne #399 jöjjön:D))


2013. okt. 5. 17:33
 1/3 anonim ***** válasza:

Gyanús, hogy nálad valami tervezési hiba lesz itt a dologban.


Amúgy egy lehetséges eset, hogy egyedire állítod a posInKat mezőt és az insertnél csekkolod, hogy hibával tér-e vissza.

Ha nincs hiba, akkor nincs ütközés, ha hiba van, akkor már szerepel az adott érték a táblában.

2013. okt. 5. 18:50
Hasznos számodra ez a válasz?
 2/3 2xSü ***** válasza:

Esetleg így is lehet:


Ugye le tudod kérdezni az adott kategória legnagyobb sorszámat:


SELECT max(posInKat) FROM forum AS f GROUP BY f.kat HAVING f.kat=$kat

($kat helyére természetesen a kategória azonosítója kerül.)


Ehhez hozzá tudsz adni egyet, és az egészet egyetlen SQL utasításba tenni:


INSERT INTO forum(nev,kat,posInKat) VALUES($nev,$kat,1+(SELECT max(posInKat) FROM forum AS f GROUP BY f.kat HAVING f.kat=$kat))


Ez egyetlen SQL utasítás, és ha minden igaz, akkor egyben fogja feldolgozni a rendszer, így nem jöhetnek közbe más SQL utasítások.

2013. okt. 5. 20:03
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

óó, tényleg :D még nem sql-eztem eleget hogy ilyen eszembe jusson :D (pedig már csináltam insert selectet)

köszi!

2013. okt. 5. 22:15

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!