Transaktiot PDO:lla
Ryhmitelkää useita kyselyitä atomisiksi transaktioiksi beginTransaction- ja commit-metodeilla.
Transaktiot PDO:lla on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on tapahtuma
Tapahtuma yhdistää useita SQL-lauseita yhdeksi atomiseksi kokonaisuudeksi: kaikki onnistuvat (commit) tai kaikki perutaan.
ACID-ominaisuudet
Tapahtumat takaavat ACID-ominaisuudet: atomisuuden, eheyden, eristyksen ja pysyvyyden.
beginTransaction()
Aloittakaa tapahtuma komennolla $pdo->beginTransaction(). Automaattinen vahvistus on poistettu käytöstä, kunnes kutsutte commit()- tai rollBack()-metodia.
commit()
Tallentaa pysyvästi kaikki beginTransaction()-kutsun jälkeen tehdyt muutokset.
rollBack()
Hylkää kaikki beginTransaction()-kutsun jälkeen tehdyt muutokset ja palauttaa tietokannan tapahtumaa edeltäneeseen tilaan.
Tapahtumamalli
Ympäröikää tapahtumat aina try/catch-rakenteella:
<?php
try {
$pdo->beginTransaction();
$pdo->prepare("UPDATE accounts SET balance = balance - ? WHERE id = ?")
->execute([100, $senderId]);
$pdo->prepare("UPDATE accounts SET balance = balance + ? WHERE id = ?")
->execute([100, $receiverId]);
$pdo->commit();
} catch (PDOException $e) {
$pdo->rollBack();
throw $e;
}Tallennuspisteet
PDO ei tue sisäkkäisiä tapahtumia suoraan. Käyttäkää SQL:n SAVEPOINT-komentoja osittaiseen perumiseen tapahtuman sisällä.
inTransaction()
Tarkistakaa, onko tapahtuma aktiivinen, komennolla $pdo->inTransaction(). Se palauttaa arvon true tai false.
Automaattisen vahvistuksen tila
PDO on oletusarvoisesti automaattisen vahvistuksen tilassa: jokainen lause vahvistetaan heti. beginTransaction() poistaa automaattisen vahvistuksen käytöstä.
Eristystasot
MySQL tukee seuraavia tasoja: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ (oletus) ja SERIALIZABLE. Asettakaa taso komennolla $pdo->exec("SET TRANSACTION ISOLATION LEVEL READ COMMITTED").
Milloin tapahtumia käytetään
Käyttäkää tapahtumia esimerkiksi tilisiirroissa, tilauksen tekemisessä varastoa vähentäen sekä kaikissa usean taulun kirjoituksissa, joissa osittainen valmistuminen ei ole hyväksyttävää.
DDL ja tapahtumat
MySQL:ssä DDL-lauseet (CREATE TABLE, ALTER TABLE) aiheuttavat implisiittisen vahvistuksen. DDL:ää ei voi perua tapahtuman sisällä.
Pikatarkistus
Mitä rollBack() tekee?
Opi PHP tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 49
- Oppitunnit
- 195
Usein kysytyt kysymykset
Onko oppitunti ”Transaktiot PDO:lla” ilmainen?
Kyllä – oppitunnin ”Transaktiot PDO:lla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Transaktiot PDO:lla”?
Ryhmitelkää useita kyselyitä atomisiksi transaktioiksi beginTransaction- ja commit-metodeilla. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Transaktiot PDO:lla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?
Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Yhteyden muodostaminen MySQL:ään PDO:lla
- Valmistellut lauseet ja sidonta
- Tulosten hakeminen PDO:lla
- Transaktiot PDO:lla