Auto-Incremento no PostgreSQL

terça-feira, 12 de janeiro de 2010 Postado por Luis Fernando

O banco de dados PostgreSQL não possui nativamente um tipo auto-incremento, mas podemos usar da malandragem pra dar um “jeitinho”...

Analise o código;

create table Produtos (    
    id integer not null,     
    descricao char(60),     
    preco decimal (15,2),     
    constraint primary key (id_produto)     
);

Esse código compila normalmente numa base de dados do PostgreSQL, mas o campo id da tabela Produtos não será auto-incremento, ele apenas não aceita valores repetidos.

Existem, basicamente, duas maneiras de se criar um campo que gear um valor automaticamente.

1 - Você pode criar uma sequence, da seguinte forma:


create sequence nome_da_sequence;     
create table produtos (     
    id_produto integer defeault nextval('nome_da_sequence') not null,     
    descricao char(60),     
    preco decimal (15,2),     
    constraint primary key (id_produto)     
);

2 – Com a ajuda dos tipos seriais. Os tipos de dados serial e bigserial não são tipos verdadeiros, mas meramente uma notação conveniente para definir colunas identificadoras únicas (semelhante à propriedade AUTO_INCREMENTO existente em alguns outros bancos de dados).

create table Produtos (   
    id serial not null,   
    descricao char(60),   
    preco decimal (15,2),   
    constraint primary key (id_produto)   
);


Isso fará com que uma sequence seja criada automaticamente com o seguinte nome: produtos_id_seq. Você pode ver a estrutura da sequence digitando no banco o comando: \d produtos_id_seq.

Boa Sorte!!!

Marcadores:

Postar um comentário