Gerar campo id auto incremente no PostgeSQL
23/03/2015 11:53
0
Olá, pessoal!

Alguém sabe me informar como faço para o GORM do Grails gerar o campo id auto incrementável?
Tags: PostgreSQL, auto_increment


0
O PostgreSQL trabalho com sequence na sua classe de domain dentro de mapping adicione o seguinte
id generator: "sequence", params: [sequence: "gerador_de_ids"]
23/03/2015 14:22


0
Olá, boa tarde!

Ao utilizar a sua dica o controle do auto incremento está sendo realizado pelo próprio GORM e não pelo banco de dados PostgreSQL. O GORM criou a seguinte tabela:

CREATE TABLE lancamento
(
id bigint NOT NULL,
version bigint NOT NULL,
data_vencimento timestamp without time zone NOT NULL,
descricao character varying(255) NOT NULL,
valor double precision NOT NULL,
CONSTRAINT lancamento_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE lancamento
OWNER TO postgres;


Porém, queria que o campo id fosse do tipo serial para o auto incrementável ser realizado pelo próprio banco de dados.
23/03/2015 15:53


0
Olá pessoal,

agora deu certo. Utilizei o seguinte trecho de código:


static mapping = {
id generator: "sequence", params: [sequence: "lancamento_sequence"], sqlType : "serial"
}


Obrigado Weibe Moura pela dica. Ela foi muito valiosa.
23/03/2015 16:07


0
Quando você informa sqlType : "serial" você só esta dizendo pro gorm que o tipo de dado e do tipo serial.. não que o banco vai incrementar esse valor como no mysql.
O PostgreSQL trabalha com sequences.. se você usa pgAdmin dentro do seu Schema deve tem as suas sequencias(o menu chama Sequences) de acordo com o nome que você informou deve ter uma sequencia chamada de lancamento_sequence, dai quando você faz um insert no banco e executado o comando NEXTVAL('lancamento_sequence') que retorna o id incrementado.. se quiser testar é só abrir editor de query do pgAdmin e rodar um SELECT NEXTVAL('lancamento_sequence').
fonte:http://www.postgresql.org/docs/9.4/static/sql-createsequence.html
23/03/2015 21:05


0
Amigo, o Postgre NÃO TEM um tipo autoincremento como o MySql e SQL Server, por exemplo. Quando se implementa isso direto na base, usa-se Trigger + Sequence.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto