Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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


--------------------
Aplikacje mobilne iPhone i iPad: http://generio.pl / http://facebook.com/GenerioPL
Portfolio: http://poslinski.net
Go to the top of the page
+Quote Post
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 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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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 Aktualny czas: 21.08.2025 - 16:52