lastInsertId funktioniert nicht in Postgresql

8

Ich verwende Postgresql, wenn ich PDO verwenden möchte, um die neueste Einfüge-ID abzurufen, habe ich ein Problem. Hier ist mein Code:

%Vor%

Die Fehlermeldung sagt

%Vor%

Ich glaube, ich habe ein falsches Verständnis von "Sequenzobjekt" im PHP-Handbuch.

%Vor%

Momentan ist "columnName" die Zeichenfolge dieses automatisch inkrementierten Attributs. Kann jemand darauf hinweisen, wo ich falsch gelaufen bin? Danke.

    
Michael 08.05.2012, 04:30
quelle

4 Antworten

15

PostgreSQL verwendet Sequenzen , um Werte für serial Spalten und serial Spalten sind in der Regel das, was für "automatische Inkrementierung" von Spalten verwendet wird PostgreSQL. Sequenzen haben Namen und sind im Allgemeinen unabhängig von einer bestimmten Tabelle, so dass Sie eine Sequenz haben können, die eindeutige IDs für mehrere verschiedene Tabellen generiert. Der Name der Sequenz ist das, was lastInsertId als Argument benötigt:

  

Zum Beispiel müssen Sie für PDO_PGSQL () den Namen eines Sequenzobjekts für den Name -Parameter angeben.

Das von PostgreSQL erstellte Sequenzobjekt heißt automatisch [table]_[column]_seq , also:

%Vor%     
mu is too short 08.05.2012, 04:40
quelle
3

Ich bin heute auf dieses Problem gestoßen, lastInsertId () gab nur false zurück. Ich habe die Antwort gefunden, die mein Problem in einem anderen Thread gelöst hat: Ссылка

%Vor%

Der Sequenzname lautet also ingredients_id_seq

%Vor%     
John F 16.02.2016 19:14
quelle
1

Der Sequenzname lautet also ingredients_id_seq ,

%Vor%

Dieses Format löste tatsächlich meine Probleme !!!

    
that_developer 22.04.2016 16:56
quelle
-1

Verwenden Sie den Namen der Sequenz anstelle des Spaltennamens

%Vor%     
Wojciech Legierski 02.10.2015 09:34
quelle

Tags und Links