nowy_pehapowiec
14.10.2009, 11:18:34
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
14.10.2009, 11:26:07
nowy_pehapowiec
14.10.2009, 11:31:48
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
14.10.2009, 11:33:24
W samym PHP nie ma dla kodu PHP, a dla MySQL transakcje istnieją tylko dla tabel InnoDB.
nowy_pehapowiec
15.10.2009, 12:45:19
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
15.10.2009, 12:53:24
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.