PHP Tietokantaohjelmointi 2 Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Tiedon päivittäminen useampaan tauluun • Esimerkiksi Demox-tietokannassa tilauksen lisääminen vaati tiedon päivittämistä asiakas, tilaus ja tilausrivi -tauluihin
Tiedon päivittäminen useampaan tauluun • Tiedon päivittämisessä pitää ottaa huomioon pää/viiteavain parit siten, että oikeat arvot päivittyvät tietueille • Tiedon eheydestä pitää huolehtia siten, että jos tilaus tallennetaan, tallennetaan tilaukseen liittyvä asiakas ja tilausrivit aina (tai sitten ei tallenneta mitään) -> käytetään transaktiota
Esimerkki Transaktio alkaa Transaktio keskeytetään Haetaan lisätty astunnus Transaktio keskeytetään Haetaan lisätty tilausnro Transaktio keskeytetään Transaktioon sidotut tiedot tallennetaan
Lisätyn tietueen pääavaimen arvon hakeminen • Kutsutaan mysql_inserted_id-funktiota heti lisäyslauseen (insert) suorittamisen jälkeen • My. SQL + PHP huolehtii siitä, että yhtäaikaisten käyttäjien tekemät päivitystoimenpiteet eivät sotke pää/viiteavainpareja • Transaktioiden käyttö vielä varmistaa, että avainparit eivät voi mennä sekaisin
Transaktioista • Viite-eheys säännöt huolehtivat, että tietokantaan ei voi tallentaa ns. Orporivejä (esim. pelkkiä tilausrivejä) • Transaktioiden avulla voidaan huolehtia, että tietokantaan tallentuu kaikki tarvittava tieto (jos on tilaus, niin sille löytyy aina tilausrivit)
Transaktioiden hallinta PHP: ssä • mysql_query(”BEGIN”) aloittaa transaktioin • mysql_query(”ROLLBACK”) keskeyttää transaktion • mysql_query(”COMMIT”) tallentaa transaktion sisällä tehdyt päivitykset tietokantaan