sql >> Database >  >> RDS >> PostgreSQL

Postgres retourneert lastval() niet correct

De korte versie hier is dat het gebruik van ongekwalificeerde lastval is een slecht idee. Triggers, regels, enz. kunnen problemen veroorzaken.

Je moet lastval vermijden geheel. Gebruik:

BEGIN;

INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid") 
VALUES ('[email protected]', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6') 
RETURNING id;

waar id moet door de naam van de gegenereerde sleutelkolom.

Deze benadering behandelt invoegingen met meerdere waarden en INSERT INTO ... SELECT ... correct, en zal geen problemen hebben met triggers die sequenties aanraken.

Als u een op functie-aanroep gebaseerde benadering moet gebruiken, gebruik dan in ieder geval currval('tablename_id_seq') (door de juiste volgordenaam door te geven) in plaats van lastval .




  1. Mysql+php, hoe maak je een link die alle gegevens uit een record laat zien als je op de kop drukt

  2. Fout bij het installeren van Django CMS in virtualenv met MySQL op Mac OSX

  3. Maak cumulatieve som in view orakel

  4. Hoe willekeurig een rij selecteren, rekening houdend met een gewicht?