Hogyan írható php-ban több MySQL lekérdezés feltételekkel egy lekérdezésbe?
Sikerült írnom egy tárolt eljárást MySQL-ben de sajnos a tárhelyszolgáltató nem engedélyezi a tárolt eljárások futtatását.
Script:
DELIMITER $$
DROP PROCEDURE IF EXISTS `pic_update`$$
CREATE PROCEDURE `pic_update`
(
IN picUrlIn VARCHAR(25),
IN picMsgIn VARCHAR(140),
OUT oldPicUrlOut VARCHAR(25)
)
BEGIN
DECLARE countedRows INT(1);
DECLARE oldestId INT(1);
SELECT COUNT(*) AS `id` FROM `userspic` INTO countedRows;
SELECT id FROM `userspic` ORDER By `picdate` ASC LIMIT 1 INTO oldestId;
SELECT picurl FROM `userspic` ORDER By `picdate` ASC LIMIT 1 INTO oldPicUrlOut;
IF countedrows > 4 THEN
UPDATE userspic SET picurl=picUrlIn, picmsg=picMsgIn, picdate=CURRENT_TIMESTAMP WHERE id=oldestId;
SELECT oldPicUrlOut;
ELSE
INSERT INTO userspic (picurl, picmsg, picdate) VALUES (picUrlIn, picMsgIn, CURRENT_TIMESTAMP);
END IF;
END $$
Ezt szeretném átírni php lekérdezésekkel úgy, hogy egyszerre fusson le. Jól sejtem, hogy ehhez a mysqli_multi_query-t kellene használnom?
Ha félsz attól, hogy valami közbeszól két utasítás között, akkor használj transactionöket.
Egyébként ezek egy szempillantás alatt lefutnak.
Lehet, hogy ez a tranzakciók használta sem ad nekem megfelelő megoldást. Tudom, hogy ezek a lekérdezések pillanatok alatt végrehajtódnak, de kérdésem az hogy elméletileg lehetséges e olyan szituáció, hogyha ezt a tranzakciót használom akkor nem konzisztens lesz az egész eljárásom?
Ugyanis:
Mondjuk nyitok egy kapcsolatot (kapcsolat1):
1 - Lekérem a tábla sorainak számát. (Erre épül az egész feltétel) Legyen mondjuk: 3
2 - Ha a tábla sorainak száma 3 > 5 IGAZ akkor UTASÍTÁS1 azaz UPDATE ha HAMIS UTASÍTÁS2 azaz INSERT.
De mi van akkor ha közben nyitok egy másik kapcsolatot is (kapcsolat2) és ugyan úgy lekéri mielőtt a kapcsolat1 lefutna teljesen:
1 - Lekérem a tábla sorait és itt is 3-at fog mutatni...
Ezt szerintem a tranzakciók használatával sem kerülhetem ki vagy igen? Vagy esetleg megvárja míg a kapcsolat1 lefut? Vagy hogy működik ez a mysql-nél?
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!