Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kilka operacji na bazie - mają wykonać sie wszystkie vezbłędnie albo żadna
nowy_pehapowiec
post 14.10.2009, 11:18:34
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
dr_bonzo
post 14.10.2009, 11:26:07
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Podstawy... http://en.wikipedia.org/wiki/Database_transaction


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
nowy_pehapowiec
post 14.10.2009, 11:31:48
Post #3





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Riklaunim
post 14.10.2009, 11:33:24
Post #4





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


W samym PHP nie ma dla kodu PHP, a dla MySQL transakcje istnieją tylko dla tabel InnoDB.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
nowy_pehapowiec
post 15.10.2009, 12:45:19
Post #5





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post 15.10.2009, 12:53:24
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 12:41