sélectionner / afficher le dernier numéro de série inséré dans postgres

dans le server sql je fais comme ceci:

insert into foo(name) values('bob') select @@identity; 

donc j'obtiens une requête / résultat scalaire affiché

comment cela avec postgres?

Obtenez une séquence spécifique:

 SELECT currval('name_of_your_sequence'); 

Récupère la dernière valeur de la dernière séquence utilisée:

 SELECT lastval(); 

Consultez également le manuel: http://www.postgresql.org/docs/current/static/functions-sequence.html

Modifier: Vous pouvez également utiliser RETOUR dans votre INSERT:

 INSERT INTO foo(id, name) VALUES(DEFAULT, 'bob') RETURNING id; 

Un bon moyen est d'utiliser RETURNING id. Voici un petit exemple utilisant PL / pgSQL:

  DECLARE nivel1 RECORD; resultId BIGINT; BEGIN FOR nivel1 IN SELECT * FROM primary_table LOOP INSERT INTO second_table(id, field2, field3) VALUES (DEFAULT, "value2", "value3") RETURNING id INTO resultId; RAISE NOTICE 'Inserted id: %s', quote_literal(resultId); END LOOP; RETURN; END 

Ça marche pour moi!

Ce serait

GET DIAGNOSTICS YourParam = RESULT_OID;

Voir ici http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html faites défiler jusqu'à 37.6.6. Obtention du statut de résultat

asker edit: J'ai essayé ceci:

 create or replace function aaa() returns int as $$ declare a int; begin insert into oameni values(default, 'aaa'); get diagnostics a = result_oid; return a; end; $$ language plpgsql; 

il renvoie toujours 0, vous savez ce qui ne va pas ici?