PostgreSQL, Utilizando o RETURNING

Nesse post eu gostaria de explorar um recurso muito interessante que surgio na verão 8.3 do PostgreSQL é a clausula RETURNING, ela é muito util quando se deseja obter um valor que foi persistido em um INSERT e o campo é auto incrementado ou modificado por uma TRIGGER.

Vejamos um exemplo simples, vamos criar uma tabela com 2 campos sendo um deles gerado automaticamente.

CREATE TABLE entidade (
    codigo bigserial NOT NULL,
    descricao character varying NOT NULL
);

ALTER TABLE ONLY entidade
    ADD CONSTRAINT entidade_pkey PRIMARY KEY (codigo);

Agora executaremos o INSERT .

INSERT INTO entidade(descricao) VALUES ('Descrição') RETURNING codigo;
Se for o primeiro registro da tabela retornará um registro com o campo código e o valor será 1.

Pode ser especificado mais de um campo, separando por virgula.

Espero ter sido util e até o próximo post.


Veja mais na documentação oficial aqui.