Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nietypowy indentyfikator
kefi
post 27.05.2009, 21:19:44
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.

  1. INSERT INTO "ludzie" ("kod","nr","imie",) VALUES ('75-500',SELECT max
  2. ("nr")+1 AS n FROM "places" WHERE "kod" = '75-500' ,'czesław')


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ść winksmiley.jpg
Wersja PgSQLa na home.pl to 8.2.9
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wookieb
post 27.05.2009, 21:35:09
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


--------------------
Go to the top of the page
+Quote Post
kefi
post 27.05.2009, 21:49:18
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 winksmiley.jpg

A funkcje do triggera mam zrobioną , tylko serwer nie ma obsługi PLSQL ;(

Ten post edytował kefi 27.05.2009, 21:52:00
Go to the top of the page
+Quote Post
wookieb
post 27.05.2009, 21:52:45
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 smile.gif Zainstaluj pgAdmina i spróbuj smile.gif

//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


--------------------
Go to the top of the page
+Quote Post
kefi
post 27.05.2009, 22:03:37
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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:31