![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 22.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Pomóżcie!Ma to byc transakcja przy rezerwacji ksiazek w bibliotece,najpierw ma sprawdzac czy liczba wypozyczonych ksiazek przez klienta przekracza 10 jesli tak to koniec.Potem jesli liczba dostepnych egzemplarzy jest 0 to tez lipa.u_id i k_id to identyfikatory uzytkownika i ksiazki.Przypisuje je do zmiennej gdzie maja byc przechowywane te identyfikatory(interfejs ma byc w PHP).Ale wywala sie juz w pierwszym IF!!Co jest nie tak??
BEGIN; IF (SELECT l_wyp_ks FROM uzytkownicy WHERE u_id = $zmienna ) >=10 THEN RAISE NOTICE "Nie mozesz wypozyczyc zadnej ksiazki!" ROLLBACK; ELSE IF (SELECT l_dost_egz FROM ksiazki WHERE k_id = $zmienna) = 0 THEN RAISE NOTICE "Ta ksiazka nie jest dostepna!" ROLLBACK; ELSE UPDATE ksiazki SET l_dost_egz = l_dost_egz - 1 WHERE k_id =$zmienna; UPDATE uzytkownicy SET l_wyp_ksiazek = l_wyp_ksiazek + 1 WHERE u_id = $ zmienna; END IF; END IF; COMMIT; Ten post edytował augiasz 22.06.2007, 19:47:53 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W SQL nie ma IF'a - to jest w PL/pgSQL
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 22.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
To jak to zrobic bez IF'a??
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
@augiasz Zamknij to w funkcje. I wtedy tylko zostanie CI wywolanie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 22.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mogłbys to sprecyzowac?? W ogole to w Postgresie nie moze byc IFów,chyba ze w triggerze jak okreslamy język...,ale tu...
|
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Kod ktory podeslales na forum to nie jest SQL to jest plpgsql, a tam juz jest inna skladnia. SQL to jezyk zapytan. Zeby to Ci zadzialalo to zamknij to w funkcje lub w procedure.
|
|
|
![]() ![]()
Post
#7
|
|
Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 1 Dołączył: 13.04.2003 Skąd: z ławki przed blokiem Ostrzeżenie: (0%) ![]() ![]() |
zbłąkany miśku to zadziała na PG? ;]
hm... miłe... |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
@AcidBurnt Tak, tylko ze zamiast instrukcja w warunku powinno byc pole. No chyba ze pozniej jest rzutowanie przez type
|
|
|
![]() ![]()
Post
#10
|
|
Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
@SongoQ: a nie może tam być też jakieś podzapytanie? W manualu nie piszą nic na ten temat i nie widze przykładu żadnego (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) .
Sprawdził to ktoś może? |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Podzapytanie oczywiscie ze moze byc. Moze byc tam co chesz tylko wazne ze to ma zwracac 1 pole/wartosc. Ale da sie caly rekord z wykorzystaniem rzutowania. Sa przyklady w manualu.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:59 |