![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam zrobić tabelę której rekordy będą posiadały numer
indetyfikacyjny składający się z kodu pocztowego oraz doklejonej koncówki która jest dla kazdego nowego rekordu z tym samym kodem większa o 1 np. 12-000/0001 | wiesiek 12-000/0002 | heniek 13-123/0001 | czesław 12-000/0003 | marian Ta wartość identyfkatora będzie pobierana z dwóch kolumn tej z kodem oraz z koncówką, w jaki sposób nie robiąc tego po stronie skryptu moge osiągnąć taki efekt ? Próbowałem zagnieżdzić selecta w ten sposób co działa dobrze ale gdy jest juz jakis rekord w bazie z takim kodem pocztowym bo jesli nie, to wewnętrzny select zwraca mi null. MySQL posiada funkcje IF() albo IFNULL() która rozwiązała by mi tu problem ale w dokumentacji jej nie widze.
Probowałem castować nulla na integer ale nadal zwraca mi nulla, próbowałem też napisać funkcje PL/SQL po to by dowiedzieć się ze postgres na home.pl nie oferuje wsparcia dla funkcji PL/SQL a to by było fajne bo mógł bym sobie to pole ustawiać triggerem i zapomnieć o tym w skrypcie. Z tego co widze to moge dodawać wyłącznie funkcje w samym SQL ale przeglądając dokumentacje widze ze w takiej funkcji nie moge uzywac ifów. To jest moje pierwsze spotkanie z Postgresem więc prosze o wyrozumiałość ![]() Wersja PgSQLa na home.pl to 8.2.9 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Do postgresa producent dolacza pgAdmina. Zainstaluj go sobie, bardzo przydatne narzędzie.
I tam zauważysz, że jak tworzysz np pole typu serial (mysqlowy auto_increment) to tak naprawde jest to pole typu integer z wartoscia domyslna. U ciebie może być inaczej. Tworzysz funkcje która bedzie wyliczac kolejne id. Albo utworzyc triggera na INSERT ktorzy utworzy id dla nowego pola. Ten post edytował wookieb 27.05.2009, 21:48:10 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
tylko serwer jest na home.pl i tam chyba nie mam dostępu do takich zabawek zeby sie zdalnie połączyć pgadminem, ale mam dostep do phppgadmina.
Patrze na te sekwencje i nadal nie wiem jak zrobic by dla nowego wpsisu nadawać dzięki temu koncówkę nr w zależności od kodu pocztowego. Z tego co widze w phppgadminie to moge ustawic tak ze bedzie mi w kółko daną sekwencje powtarzał, zawsze moge zorobić to w PHP ale sposób z selectem w insercie działa prawie dobrze gdyby nie ten null do którego nie moge dodać jedynki wszystko załatwiało by jedno zapytanie ![]() A funkcje do triggera mam zrobioną , tylko serwer nie ma obsługi PLSQL ;( Ten post edytował kefi 27.05.2009, 21:52:00 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Troche źle napisałem o tych sekwencjach. Użyj triggerów. Po prostu daj trigger na INSERT i tam już reszte można oprogramować.
HOME pozwala na połączenie z zewnątrz ![]() ![]() //EDIT Niemożliwe :/ myślałem, że to standard a co dopiero na HOME. Może to ci pomoże. http://www.postgresql.org/docs/8.3/static/...er-example.html Ten post edytował wookieb 27.05.2009, 21:57:10 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
juz mi sie wszystko udało zrobić przy pomocy triggerów a o obsługe pl/sql w home trzeba poprosić
Ten post edytował kefi 30.05.2009, 18:21:07 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 20:31 |