Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP + MSSQL + Transakcja
peyn
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.09.2004
Skąd: Konin

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


Witajcie

Mmam takie cos:
  1. <?php
  2.  
  3. $q = &#092;"BEGIN TRANSACTION Tran;\";
  4. $q.= &#092;"Insert into tabela (pole) values ('1');\";
  5. mssql_query($q);
  6.  
  7. $m = mssql_get_last_message();
  8.  
  9. if ($m == '') 
  10. {
  11. mssql_query(&#092;"COMMIT TRANSACTION Tran;\");
  12. }
  13. else
  14. {
  15. mssql_query(&#092;"ROLLBACK TRANSACTION Tran;\");
  16. };
  17.  
  18. ?>


I teraz tak, w tabeli mam klucz na ta kolumne uniemozliwiajacy wpisanie powtornie tej samej wartosci. Mam tam tez juz jeden rekord z wartoscia '1'. A wiec wykonanie tego zapytania zwroci blad. I rzeczywiscie zwraca, problem jedynie w tym ze get_last_message mi go nie zwraca :-(

Moje pytanie: czy ktos juz przerabial transakcje w php + mssql? Jakie jest na to rozwiazanie? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zalew
post
Post #2





Grupa: Zarejestrowani
Postów: 407
Pomógł: 0
Dołączył: 24.10.2002
Skąd: warszawa

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


podstawowa zasada: baza to baza, interfejs to interfejs. wszystkie zadania, ktore naleza do bazy danych powinno sie wykonywac za jej pomoca w miare mozliwosci, ana mozliwosci m$ nie ma co narzekac..
akurat szczerze nie wiem co ty chcesz zrobic poza tym, ze sprawdzic czy insert sie udal.. ale uzaleznianie operacji bazy od ifa w interfejsie - wg mnie od dupy strony

napisze jak ja bym to zrobil przykladowo, jesli dobrze cie rozumiem
  1. CREATE FUNCTION insertmydata (integer, text) returns BOOLEAN AS '
  2. begin insert into mytable (id, comment) values ($1, $2);
  3. if (@@ROW_COUNT>0) then
  4. return true;
  5. else
  6. return false;
  7. end if;
  8. end;'

(skladnia moze byc do poprawienia w ktoryms miejscu, bo ostatnio w pgsqlu siedze glownie)

wywolujesz ta funkcje i albo ci wstawi do bazy albo zwroci false..
potem
  1. <?php
  2. if ($function) {
  3. //zrob costam
  4. } else {
  5. //zrob co innego, wroc do forumalrza, nie wiem..
  6. }
  7. ?>



wiesz, masz tyle mozliwosci po stronie bazy zeby kontorlowac wpisanie rekordu, zalozyc trigger tkory to sprawdzi i zincrementuje id albo odrzuci transakcje, zdefiniowana funkcje, ktora wszystko sprawdzi; ze nie rozumiem totalnie po co skladac ifami query po stronie php.. troche jak poczakujace mysqlowanie (imo, bez urazy)..

Ten post edytował zalew 21.09.2004, 00:12:01
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 03:21