last_insert_id in postgres

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis

dennis

22/12/2008 16:21:00
Quote Anchor link
ik ben bijna klaar met mijn Database class
die zowel met mysqli werkt als nu ook met postgres

alleen er is 1 functie waar ik niet uitkom

ik kan nergens vinden wat de postgreSQL versie is van mysqli_insert_id.
nu werkt postgres met sequences en niet met auto_increment maar mij lijkt dat het toch mogelijk moet zijn.

weet iemand hier een oplossing voor.

mvg,
Dennis
 
PHP hulp

PHP hulp

25/01/2022 15:46:22
 
Frank -

Frank -

22/12/2008 16:29:00
Quote Anchor link
Die is er ook niet, zo werkt het namelijk niet in de grote database-wereld.

Vooraf het id opvragen (dus nog voordat de INSERT is uitgevoerd):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT NEXTVAL('naam_van_de_sequence') AS next_id;

Ga dit resultaat fetchen en zet hem in je INSERT:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO tabelnaam (id, kolomnaam)
VALUES($next_id, 'waarde');

Je kunt ook achteraf opvragen wat het is geworden door CURRVAL() of LASTVAL() te gebruiken, ook hier weer een SELECT-query voor gebruiken.

Een andere hele handige optie is RETURNING gebruik bij de INSERT-query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO tabelnaam (kolomnaam)
VALUES('waarde') RETURNING id;

Ga dit resultaat fetchen zoals je een SELECT fetcht en klaar ben je.

Uiteraard kan het onmogelijk met MySQLi werken, dat is een aanpak voor MySQL-databases. Het heet tenslotte geen pgSQLi...

Vergeet niet dat iedere database anders is en dat je altijd specifieke SQL nodig hebt. Tenzij je alle voordelen van jouw database wilt negeren en wat generieke SQL wilt gebruiken. Snelheid kun je dan beter vergeten.

Ps. RETURNING is pas sinds versie 8.2 beschikbaar, controleer dat wel even.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.