Re: [Dúvida] Como criar um gatilho para o pk auto-incrementar (p ostgres)
Claudio de Taunay <claudiotaunay-/E1597aS9LRfJ/[email protected]>
| Newsgroups | gmane.comp.db.bancosdedados |
|---|---|
| Message-ID | <[email protected]> |
Você geralmente usa o sequence no campo id que for primary key.
Leonardo Duval escreveu:
>
> Olá,
>
> O que o pessoal quis te explicar é que o Postgres tem um recurso chamado
> "Sequence" que funciona quase como autoincrement. Para entender melhor
> segue
> o exemplo de como criar um "Sequence"
>
> CREATE SEQUENCE seq_cid_id
> INCREMENT 1
> MINVALUE 1
> MAXVALUE 9223372036854775807
> START 5458
> CACHE 1;
> ALTER TABLE seq_cid_id OWNER TO postgres;
>
> O código acima cria um sequence chamado seq_cid_id que incrementa de 1
> em 1
> començando pelo valor 1. Quando tu criar uma tabela se cria a PK
> referenciando este sequence... segue o exemplo:
>
> CREATE TABLE tbl_geral_cid
> (
> cid_id tp_id NOT NULL DEFAULT nextval(('seq_cid_id'::text)::regclass),
> est_id tp_id NOT NULL,
> cid_nome tp_nome_50 NOT NULL
> )
> WITH (OIDS=TRUE);
> ALTER TABLE tbl_geral_cid OWNER TO postgres;
>
> No código acima tem o sql para criar uma tabela, sendo que a chave
> primaria
> "cid_id" referencia o sequence ("nextval(('seq_cid_id'::text)")
>
> Não vejo a necessidade de criar um gatilho para incrementar uma pk,
> acho que
> tu deves somente fazer uma chamada no sequence.
>
> Espero que tenha ajudado.
>
> Abraço
>
> Leonardo de Barros Duval
>
> 2008/8/22 Claudio de Taunay <claudiotaunay-/E1597aS9LRfJ/[email protected]
> <mailto:claudiotaunay%40yahoo.com.br>>
>
> > Explica melhor, eu não entendi exatamente o que você deseja.
> > Jonny Marques escreveu:
> >
> > >
> > > Olá pessoal,
> > >
> > > Eu queria uma maneira do meu campo PK auto-incrementar via uma trigger
> > > (gatilho) ou outro recurso no próprio banco de dados (postgres).
> > > Obrigado antecipadamente.
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> --
> Att,
>
> Leonardo de Barros Duval
> Fone 55 51 84153115
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
[As partes desta mensagem que não continham texto foram removidas]