Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> insert_id
SDK
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Witam

Chodzi o wyciągnięcie z pgsql ostatniego id rekordu dodanego przez insert w sposób analogiczny od mysqli (insert_id) ...
Kombinuje z klasą, ale może ktoś już temat przemielił na wskroś i zna skuteczne jak najbardziej uniwersalne rozwiązanie.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


W postgresie możesz to zrobić na dwa sposoby:

Założenie mam takie, że korzystasz z sekwencji do tworzenia kluczy głównych w tabelach (podobnie jak AUTO_INCREMENT w MySQL)

I. Najpierw robisz zapytanie o kolejną wartość w sekwencji, czyli przykładowo:
  1. SELECT NEXTVAL('nazwa_sekwencji);

Wynik tego selekta zapisujesz sobie do zmiennej a następnie robisz "INSERT" z użyciem tej wartości.
Przykład z wykorzystaniem AdoDB:
// "rezerwujemy" identyfikator, który już nikt kto używa sekwencji go nie użyje
$idProduktu = $db->GetOne("SELECT nextval('produkt_id_produkt_seq'::regclass);");
// i z niego korzystamy:
$db->Execute("INSERT INTO produkt (id_produkt, nazwa, cena) VALUES ($idProduktu, 'Ptasie Mleczko', '3');");
// identyfikator wprowadzonej krotki masz w $idProduktu

II Przykład chyba bardziej prosty (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) użycie RETURNING
przykład zapytania
  1. INSERT INTO produkt (nazwa, cena) VALUES ('Ptasie Mleczko', '3') RETURNING id_produkt;



Myślę, że pomoże
Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Jest jeszcze trzeci sposób. Tworzysz tabelę z OID, a następnie używasz funkcji pg_last_oid. Funkcja ta zwróci Ci OID dodanego wiersza. Jedyne co musisz zrobić, to wykonać zapytanie i dać w warunku ten OID.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 23:39