Auto-Incremento no PostgreSQL
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!!!