[pgSQL]Nextval()
Ik heb voor een applicatie die ik aan het schrijven ben de waarde nodig die na een insert wordt teruggegeven, normaal zou je dit doen met PDO::lastInsertId() maar dit ondersteunt PostgreSQL niet. Ik heb dus even hier op het forum en op google gezocht en kwam op de volgende query om die waarde op te vragen.
Deze query zou normaal gesproken bij het fetchen 1 resultaat bevatten en dat is de volgende waarde van de sequence. Enkel krijg ik als ik deze query uitvoer in pgAdmin III de volgende melding;
Heeft iemand een idee hoe ik dit oplos? Op google kon ik er niets over vinden, ook niet in de PostgreSQL handleiding.
Deze query zou normaal gesproken bij het fetchen 1 resultaat bevatten en dat is de volgende waarde van de sequence. Enkel krijg ik als ik deze query uitvoer in pgAdmin III de volgende melding;
Code (php)
1
2
3
4
5
6
2
3
4
5
6
ERROR: relation "media.type_id_seq" does not exist
********** Fout **********
ERROR: relation "media.type_id_seq" does not exist
SQL status:42P01
********** Fout **********
ERROR: relation "media.type_id_seq" does not exist
SQL status:42P01
Heeft iemand een idee hoe ik dit oplos? Op google kon ik er niets over vinden, ook niet in de PostgreSQL handleiding.
Gesponsorde koppelingen:
Je kan geen verwijzingen gebruiken in nextval, de bottelnek is dus 'media.'
Het is dus SELECT NEXTVAL(sequencenaam)
Het is dus SELECT NEXTVAL(sequencenaam)
Als ik de query uitvoer zonder het schema naam krijg ik exact dezelfde fout.
Weet je zeker dat je die sequence goed aangemaakt hebt?
CREATE [ TEMPORARY | TEMP ] SEQUENCE
name
[ INCREMENT [ BY ]
increment
]
[ MINVALUE
minvalue
| NO MINVALUE ] [ MAXVALUE
maxvalue
| NO MAXVALUE ]
[ START [ WITH ]
start
] [ CACHE
cache
] [ [ NO ] CYCLE ]
CREATE [ TEMPORARY | TEMP ] SEQUENCE
name
[ INCREMENT [ BY ]
increment
]
[ MINVALUE
minvalue
| NO MINVALUE ] [ MAXVALUE
maxvalue
| NO MAXVALUE ]
[ START [ WITH ]
start
] [ CACHE
cache
] [ [ NO ] CYCLE ]
De sequence heeft PGSQL zelf aangemaakt en wordt gebruikt voor een primary key. Dit is de code van mijn sequence.
edit: wat een oliebol ben ik ook he, was een lettertje vergeten, de sequence heette types_id_seq ik had type_id_seq. Toch hartelijk dank voor de hulp, het werkt nu.
edit: wat een oliebol ben ik ook he, was een lettertje vergeten, de sequence heette types_id_seq ik had type_id_seq. Toch hartelijk dank voor de hulp, het werkt nu.
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
In oracle werkt het als volgt:
'SELECT sequencenaam. nextval FROM dual'
Overigens krijg je nu het id van de volgende primary key
'SELECT sequencenaam. nextval FROM dual'
Overigens krijg je nu het id van de volgende primary key
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Je doet een select nextval van je sequence en die voer je in als id van de nieuwe regel.
Als je namelijk een rij aanmaakt en dan de huidige waarde van de sequence opvraagt kan het zijn dat er al weer een nieuwe rij is. Dat wil je niet hebben.
De nextval/currvall/lastval staan ook gewoon in de handleiding
Als je namelijk een rij aanmaakt en dan de huidige waarde van de sequence opvraagt kan het zijn dat er al weer een nieuwe rij is. Dat wil je niet hebben.
De nextval/currvall/lastval staan ook gewoon in de handleiding



