Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kilka operacji na bazie - mają wykonać sie wszystkie vezbłędnie albo żadna
Forum PHP.pl > Forum > Bazy danych
nowy_pehapowiec
Mam problem z obsługą bazy. Dodanie produktu to dodanie kilku rekordów do kilku tabel. I czasami coś się namiesza i w jednym z zapytań do bazy wyskakuje błąd. Ale wcześniejsze zapytania zostały wykonane. I wtedy musze ręcznie wycinać te wpisy albo ręcznie dodać te które z powodu błędów się nie wykonały.

Co zrobić aby jeśli choć jedno zapytania do bazy jest błędne (np okaże się sprzeczne z definicją kolumn, tabel) wszystkie zapytania były anulowane. Czyli albo wszystkie dobrze albo wcale.

Podobnie z przenoszeniem plików wgrywanych na serwer. Jeśli inserty i updaty bazy się nie udały to nie chciałbym, żeby plik był przenoszony.

Jak to zrobić?

pozdro
dr_bonzo
Podstawy... http://en.wikipedia.org/wiki/Database_transaction
nowy_pehapowiec
Dzięki, zabieram się do czytania.

A czy jest odpowiednik transakcji w php? Np ileś linijek kodu ma się wykonać w całości albo wcale? Bardzo by mi to ułatwiło sprawę.

pozdro
Riklaunim
W samym PHP nie ma dla kodu PHP, a dla MySQL transakcje istnieją tylko dla tabel InnoDB.
nowy_pehapowiec
A ta obiektowa konstrukcja try-catch? Nie zapewnia tego? No bo jak mam bazę i robię ileś operacji na niej i potem chce zrobić jakieś operacje z np z plikami (czyli już nie używam bazy a tylko php) to te wszystkie mniejsze elementy mają dawać jakiś efekt. Jeśli jeden z tych elementów się nie wykona to efekt jest popsuty. No ale coś się tam wykonało i to trzeba później anulować - powrót do pierwotnego stanu. No jak to zrobić w php? Jak sobie z tym radzicie?


Co do mysql, to próbuje z tymi transakcjami ale nie bardzo mi to wychodzi. Może znacie jakieś dobre tutki na ten temat? A dwa to ograniczenie tylko do innodb mi przeszkadza. Czy w postgresie też są takie ograniczenia, że w jednym typie tabel coś działa ale inna rzecz już nie? Jakieś inne alternatywy dla mysql poza postgresem?

pozdro
nospor
Cytat
A ta obiektowa konstrukcja try-catch? Nie zapewnia tego?
nie

Cytat
Co do mysql, to próbuje z tymi transakcjami ale nie bardzo mi to wychodzi.
to pokaz jak probujesz
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.