Diogo Teixeira Rossato wrote: > > Como criar um campo de auto-incremento no PG-SQL? Por exemplo: > > > > /? No primeiro registro o campo funcionario_id assume o valor de 1. No > > próximo registro adicionado ele tomará o valor de 2. Se eu excluir o > > registro nº. 2 ao invés dele criar o registro nº. 3 ele cria um novo > > registro nº. 2.?/ > > > Para auto-incremento, use o tipo serial. > Ele não vai voltar o número ao excluir o registro, então > você terá que criar uma trigger no "on delete" para voltar 1 > na sequence quando o excluído for o último registro. > Acho que o gatilho ON DELETE para voltar um valor na sequência não funciona. E se você tiver uma transação concorrente? Se você não quiser furar uma sequência, você terá que usar uma tabela com um campo inteiro e utilizar o seguinte pseudo-código:
BEGIN; LOCK TABLE x; SELECT MAX(a) AS t FROM x; INSERT INTO x VALUES(t + 1); INSERT INTO sua_tabela (campo1, campo2) VALUES(t + 1, 'descricao'); COMMIT; -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios
