Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: insert_id
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
SDK
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
Cezar708
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 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
batman
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.