![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 10.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przykład - jest sobie insert do tabeli, która ma parę checków, jakaś kolumna ma indeks unique
i teraz chcę sobie zrobić w funkcji PL/PGSQL obsługę błędów jak widziałem we wzorze jest tak, że EXEPTION WHEN nazwa_błedu THEN itp itd a nie ma czegoś co by załatwiało wszystko od ręki, bo rodzajów błędów może być sporo i żeby nie szukać w opisach błedów i nie domyslać się jakie to się mogą rzeczy przydarzyć to żeby zrobić na wszystkie błędy |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wiesz w PHP,Java możesz wyłapać wszystkie wyjątki korzystając z tego, że wszystkie dziedziczą, jak dobrze czytam to PostgreSQL ma wyjątki po prostu niezależne, nie obiektowe, więc nie ma raczej możliwości aby łapać całą pule.
Do tego wyłapywanie wszystkich "tak na wszelki wypadek" jest najgłupszym podejściem, bo po to wyłapujesz, aby coś z tym zrobić, bo jak będziesz wszystkie błędy ukrywał, to do końca świata nie dojdziesz dlaczego coś nie działa. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 10.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za zainteresowanie i odpowiedź
jakoś sobie z tymi moimi pytaniami metoda prób i błędów poradziłem sprawa wygląda tak - robię coś dla znajomego i tak ze względów praktyczno dydaktycznych wziąłem sobie postgresa - bo prawie nic w nim nie robiłem wcześniej no i mam problem następny chcę zrobić TRIGGERA - na AFTER INSERT - chcę aby do innej tabeli zapisał się rekord w którym jest LAST ID tego właśnie zapisego rekordu zrobiłem to tak
i mam błąd record "new" is not assigned yet jak takie cos zrobić? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy po prostu nie masz coś źle zrobione w reszcie kodu, bo tu wygląda na poprawny.
Na pewno masz na założony na tej tabeli co idzie insert i czy jest poprawna definicja triggera? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 10.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
jakoś sobie poradziłem z problemem
ale skoro masz jeszcze ochotę na dyskusje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) to wracając to tematu obsługi błędów czy jest w PL/PQSQL coś takiego jak TRY CATCH? taka instrukcja wyłapuje wszystkie błędy i o takie coś mi chodzi - wiem, że może się przydarzyć błąd typu1, typu2 no to na to mam CATCH(typ1) CATCH(typ2) i jeśli by coś było jeszcze nie tak to na końcu CATCH(ogólny) i takie coś by się przydało np do transakcji |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
http://www.postgresql.org/docs/current/sta...-ERROR-TRAPPING
Przeczytaj na samym dole, chyba o to Ci chodziło. Co do wyłapywania większej puli błędów, to jak już pisałem to nie jest obiektowe, nie ma dziedziczenia, więc nie można tego zrobić jak w programowaniu obiektowym. Jedyne co mi przychodzi do głowy to specjalna nazwa która wyłapuje wszystkie, ale to było by bez sensu, bo błędy wyłapujesz te, które wiesz że możesz je poprawić inne lecą dalej. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 10.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
dzięki raz jeszcze, własnie tak sobie radzę
co prawda znalazłem na liście błędów successful_completion ale nie wiem jak sprawdzić czy było OK bo np takie coś EXCEPTION WHEN NOT successful_completion THEN czy EXCEPTION WHEN !successful_completion THEN generuje błąd a to by usprawniło sprawę bo jak jest successful_completion to jest OK można np dać COMMIT a jak nie ma successful_completio można dac ROLLBACK i po wszystkim |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Przecież jak wystąpi błąd podczas transakcji jest robiony automatycznie rollback.
I na pewno negacja w PostgeSQL to 'NOT' a nie wykrzyknik. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 10:41 |