![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 198 Pomógł: 0 Dołączył: 31.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
To mój drugi post, jestem zielony w postgresie i dopiero sie tego ucze. Zrobiłem sobie kilka tabelek w bazie i dodałem sekwencje do tworzenie nowych numerów id (inkrementacja w mysql).
Kod wygląda tak
Teraz ten id jest wykorzystywany w trzech tabelach jakos klucz publiczny. Jak w PHP zrobić odpowiednik Kod $id=mysql_insert_id(); dla postgresa. Czyli zwraca ID wygenerowane dla pola z własnością AUTO_INCREMENT. Chodzi o to jak w PHP odwołać sie do tej sekwencje i dodawać ten sam numer id do kazdej tabeli. Dzieki z góry za pomoc. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
nie ma takiej możliwości w postgresie, nie ma funkcji a`al pg_insert_id(), ale jest rozwiązanie Twojego problemu:
zrób tak: najpierw pobierz wartość identyfikatora a potem przy wstawianiu go użyj: przykład:
i możesz potem dalej $id używać ![]() Pozdro |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Koledze chyba chodziło o pobranie ID aktualnie wstawionego wiersza więc w tym przypadku zamiast NEXTVAL() bardziej się sprawdzi, za przeproszeniem, CURVAL().
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
curval() jest trochę niebezpiecznym ponieważ zwraca aktualną wartość sekwencera, więc jeśli ktoś w czasie wykonywania skryptu zwiększy jego wartość w tle Twój skrypt wykona się najprawdopodobniej nieprawidłowo.
mysql_insert_id() jest o tyle bezpieczne, że pobierana jest wartość identyfikatora wpisanego podczas ostatniej operacji INSERT w danym połączeniu z bazą. CURVAL() pobierze Ci aktualną wartość z bazy (czyli może być zmieniona z nieprzewidziany sposób przez jakąkolwiek operację na bazie danych, niekoniecznie Twoją) Jeśli będziesz postępował tak jak Ci napisałem to "zarezerwujesz" sobie identyfikator i na pewno będzie cały czas będzie aktualny. Pozdrawiam |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 198 Pomógł: 0 Dołączył: 31.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Kłania się sposób odczytywania danych wyciąganych przez zapytanie. Patrz pg_query" title="Zobacz w manualu PHP" target="_manual i przykład pierwszy.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 198 Pomógł: 0 Dołączył: 31.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:28 |