MySQL feltétel írása
Tudom nem illik konkrét példára megoldást kérni és a google a barátom (hozzáteszem használtam) de sehogy se tudom merre induljak el.
Van egy Táblám amiben a következő oszlopok szerepelnek: id, kep_url, datum
Az szeretném elérni, hogyha a mondjuk a tábla sorai még nem érik el a 10db-ot akkor csak simán felvigye a következő sort, de amennyiben eléri a 10db-ot úgy a legrégebben felvitt rekordot frissítse az újra.
Egyesével lekérni a részeket PHP-val még talán meg tudnám csinálni, tehát lekérik hány sor van a táblában és ha nagyobb akkor egy másik lekérdezéssel berendezem időrendben aztán az utolsó sort UPDATE-elem, csak szeretném ezt egy db SQL lekérdezésbe valahogy.
Előre is köszönöm, akinek lesz valami hozzászólása.
■ Van egy Táblám amiben a következő oszlopok szerepelnek: id, kep_url, datum
Az szeretném elérni, hogyha a mondjuk a tábla sorai még nem érik el a 10db-ot akkor csak simán felvigye a következő sort, de amennyiben eléri a 10db-ot úgy a legrégebben felvitt rekordot frissítse az újra.
Egyesével lekérni a részeket PHP-val még talán meg tudnám csinálni, tehát lekérik hány sor van a táblában és ha nagyobb akkor egy másik lekérdezéssel berendezem időrendben aztán az utolsó sort UPDATE-elem, csak szeretném ezt egy db SQL lekérdezésbe valahogy.
Előre is köszönöm, akinek lesz valami hozzászólása.
szeretném ezt egy db SQL
Ez az egész elképzelés
A lényeg
Nos azért kellene nekem ez a dolog, mert korlátozni szeretném a mappában lévő képek mennyiségét. És mivel törlődnének a régi képek egy bizonyos szám felett így az adatbázisban is törölni kell a megfelelő sort illetve inkább update-elni.
Ha tényleg így akarod, akkor
(COUNT(mező)+1)%10
Ez mit takar
Vagy rossz ez az elgondolás? Hogy csinálnátok?
Ebben az esetben vidd fel az
De szerintem egyszerűbb és felhasználóbarátabb is, ha a tíz kép után a felhasználónak előbb törölnie kell, és csak utána tölthet fel újra.
Köszönöm a válaszokat
De akkor megcsinálom több lekérdezésből.
Végülis sikerült megcsinálnom
Bemeneti értékeknek a kep_url-t adtam meg, kimenetnek meg a frissítes előtti url-t.
Vizsgáltam a sorok számát és ettől függően vagy UPDATE vagy INSERT fut le.
UPDATE-nél visszakaom a régi url-t amit frissített az újra.
Köszönöm azért a segítséget!
Ne
Én most azzal szembesültem
talán
Gáborral nem értek egyet: sokszor alkalmazáslogika szintjén is jobb egy tárolt eljárás, mint helyette phpben ügyeskedni. Pláne ha komolyabb eredményhalmazokról is szó van.
Hogy tudnám ezt a tárolt eljárás nélkül megvalósítani.
Mivel nem nagyon találtam infót arra nézve, hogy hogyan is működik a MySQL ilyen esetben amit mindjárt vázolok, kicsit tanácstalan vagyok.
Ugye az alapkoncepció az, hogy egy táblában korlátozva lenne hogy csak X db rekord vihető fel, az X+1 már a legrégebbi rekordot frissítené az újra.
Én úgy csináltam, hogy lekéri a táblában lévő rekordok számát és erre írtam egy feltételt hogy ha az nagyobb a limitnél akkor kikeresve a legrégebbit frissítse, ha viszont kisebb akkor csak írja a tábla végéhez.
Én attól félek (tudom ennek nagyon kicsi az esélye, de van rá esély) hogy az, hogy lekérem a rekordok számát egy külön lekérdezés és a feltétel eldöntése után is egy külön lekérdezést hajtok végre. De mi van akkor, ha a két lekérdezés közt szintén nyitnak egy új kapcsolatot lekéri a sorok számát és ott is ugyan az lesz a lekért érték mint az előző kapcsolatnál. Ez esetben mondjuk előfordulhat az is, hogy ha a 50 a limit a max soroknál akkor lesz 51. sor is.
Transaction
Ezt már néztem
Erről szól
Ok
Tehát akkor egy tranzakciót, ami több lekérdezésből és bármi másból is állhat vehetem egy lekérdezésnek?
Isolation level
És milyen
Most hogy így utánnaolvasgattam