2010-09-10 3 views
0

Voilà comment je fais dans SQL Server:Comment enregistrer la dernière valeur de série dans Postgres?

insert into users(name, password) values('admin', '1'); 
declare @id int; 
set @id = @@identity; 
insert into usersroles values(@id, 1); 
insert into usersroles values(@id, 2); 

@@identityest dans le serveur sql la dernière identité insérée (série)

Comment faire la même chose dans Postgres?

+0

clause 'output'? –

Répondre

5

La façon la plus simple est d'utiliser la clause RETURNING pour INSERT:

INSERT INTO users (name, password) VALUES ('admin', '1') RETURNING id; 

qui renverra une ligne qui contient l'identifiant attribué.

Une autre option est d'utiliser la fonction currval après l'insertion dans la table des utilisateurs:

SELECT currval('users_id_seq'); 
1

Des intertubes:

INSERT INTO Table1 (...) 
    VALUES (...); 

    GET DIAGNOSTICS res_oid = RESULT_OID; 

    SELECT INTO ... 
    FROM Table1 t 
    WHERE t.oid = res_oid; 
Questions connexes