PHP i transakcje bazy

0

Czesc,

Zapewne kazdy z Was wczytywal, modyfikowal itd., cos do bazy danych i opieral sie o transakcje, otoz to wlasnie z nimi mam klopot

for() {
mssql_query("BEGIN TRANSACTION");
$result = zapytanie SQL ;

   if( !$result)
       mssql_query("ROLLBACK TRANSACTION")
   else
       mssql_query("COMMIT TRANSACTION");

}

Akurat dokonuje modyfikacji ilosci i nie wiem dlaczego MSSQL wlasnie z komenda BEGIN TRANSACTION 'dziczeje' wstawia(modyfikuje) mi jakies dziwne wartosci z kosmosu, gdy usune TRANSACTION wszystko jest wporzadku.
Moze jest cos czegos nie wiem, na czos trzeba uwazac..... ???

0

Dziwne troche wykorzystanie transakcji, bo rozstrzelone na 3 zapytania. Prawdopodobnie mssql glupieje, bo nie wie czemu 3 osobne zapytania maja dotyczyc jednej transakcji... Wykonaj to wszystko jako procedure skladowana i bedzie hulac.

Przyklad

create proc MojaProc @parametr1 int, @parametr2 varchar(50)
as
begin
declare @error int
ser @error = 0
begin transaction
insert into ...
@error = @error | @@ERROR
insert into ...
@error = @error | @@ERROR
insert into ...
@error = @error | @@ERROR
if @error <> 0
rollback trans
else
commit trans
end

PS. Pisane z glowy, moga byc bledy i literowki, ale logika zachowana.

0

HMmm moze i masz racje, ale wlasnie dlaczego glupieje, widze ze nie ma co tego dociekac, tylko szukac innej drogi...
Zawsze uwazalem ze problemy trzeba rozwiazywac a nie szukac innych....

0

Idac dalej narodzilo sie mi kolejne pytanie, jesliby utworzyc procedure i wywolujac ja w php, tak

mssql_query(exec MainProc 1,8900);

to w jaki sposob mam teraz przechwycic czy wykonalo sie cos dobrze czy zle. Pamietam w SYBASE uzywalo sie cos takiego jak raise no ale jak w PHP, bo chyba takie okienko informacyjne nie wyskoczy....

0

Nie widzę powodu, dla którego silnik miałby głupieć przy 3 zapytaniach w jednej transakcji. To jest normalny sposób używania transakcji. Wiele systemów właśnie tak działa, bez użycia procedur składowanych. Zresztą nie wszystko da się procedurami załatwić.

Próbowałeś te same zapytania wykonać z konsoli? Albo w czymś innym niż PHP?
Jeśli dadzą dobre wyniki, to problem leży zapewne po stronie integracji PHP z MSSQL.

0

@Krolik: ja tam zgaduje, nigdy nie uzywalem mssql w polaczeniu z php - choc obydwu osobno duzo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1