No PostgreSQL: Como faço para criar um contador simples que posso repor?

votos
5

Eu quero alcançar o seguinte:

ID | Counter
------------
 0 | 343
 1 | 8344

Agora dizem que eu quero atualizar contador para ID 1 ,,, qual é a maneira mais fácil de fazê-lo? Faço para usar seqüências? posso simplesmente ler o valor e atualizar? Existe algum tipo especial para isso?

Eu estava pensando em usar sequência, mas então eu tenho que criar um para cada ID (que potencialmente pode ser mais de um 1000. Eu também terá de enfrentar o problema que eu não sei quantas sequências vou precisar para que eu teria que verificar se há uma seqüência para esse ID e etc ... e eu não quero isso.

Suponha que os números são os usuários pertencentes a um determinado grupo, então uma alternativa que eu estava pensando era entrar uma linha para cada contagem e quando eu quiser obter o número que eu executar um seleto grupo pela ID ou algo assim e obter os números de linhas.

EDIT: Esclarecimento eu recebo uma lista de usuários em um arquivo CSV que meu programa lida várias vezes ao dia (nova csv várias vezes por dia). Em seguida, dependendo se o usuário enviou uma mensagem de hoje (por exemplo) eu incrementar o contador para o grupo no qual este usuário pertence. Agora em um certo ponto eu quero extrair os grupos (que pode ser dinâmico, isso depende do que eu tenho durante o dia) e obter o número I incrementado e redefini-la. Esperemos que isto explica mais: D

Obrigado pela ajuda até agora, eu vou experimentar: D

O que você acha?

Publicado 15/12/2008 em 10:08
fonte usuário
Em outras línguas...                            


3 respostas

votos
0

Ele soa como o que você precisa é criar uma vista exatamente ao longo das linhas de:

select id, count(users) from foo group by id

Respondeu 15/12/2008 em 10:20
fonte usuário

votos
6

Actualizar a tabela SET Contador = Contador + 1 = ONDE ID: ID;

(Onde 'Tabela' é, naturalmente, a tabela com o balcão, e o parâmetro ': ID' é o id do contador)

As sequências são utilizadas principalmente para geradores de auto valores de ID sequencialmente e pode ter aberturas. A instrução de atualização acima é atômica, como atualização é uma ação atômica. No entanto, não é dito que, se você emitir um seleto logo em seguida o contador ainda é o mesmo valor. Se você quer isso, você precisa seqüências, mas então você corre o risco de ter lacunas.

Assim, pode ser necessária para answerers aqui para saber qual é o propósito dos contadores é.

Respondeu 15/12/2008 em 10:23
fonte usuário

votos
8

Isso parece bastante simples.

Incremento

UPDATE Table SET Counter = Counter + 1 WHERE ID = 1

Restabelecer

UPDATE Table SET Counter = 0 WHERE ID = 1
Respondeu 15/12/2008 em 10:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more