Ir ao conteúdo
  • Cadastre-se

Como não alterar posição do registros em update


Poliano Martini

Posts recomendados

Olá pessoal,

quando faço insert no banco, o registro é salvo na última posição da tabela, agora quando faço um update, o registro independemente da posição também é jogado para a última. Tem algum comando ou configuração para o registro manter-se em sua posição conforme for sendo inserido?

Estou utilizando o Postgres.

CREATE SEQUENCE cliente_codigo_seq;

CREATE TABLE cliente
(
codigo INTEGER DEFAULT NEXTVAL('cliente_codigo_seq') NOT NULL,
nome CHARACTER VARYING(50) NOT NULL,

CONSTRAINT pk_cliente PRIMARY KEY (codigo)
);

Valeu!

Link para o comentário
Compartilhar em outros sites

  • Moderador

você esta usando com auto increment? reveja se nao fez nada de errado.. quando se usa um update set... você deve informar qual a ID do registro vai sofrer a alteraçao.

independentemente se for o ultimo ou o primeiro... a ID do registro é unico.. então se você tiver uma tabela com 10 mil registros e quiser fazer um update do registro 7000 .. você tem que especificar exemplo:

UPDATE pessoa SET nome="fulano" , idade="30" , endereco="Rua bla bla bla, 123" WHERE idPessoa = 7000;

claro q esses valores sao só um exemplo e no lugar deles serao as suas variaveis e o ID passado geralmente por GET

Link para o comentário
Compartilhar em outros sites

Estou utilizando sequence, e o comando está correto sim, acho que você não entendeu a pergunta, o update está sendo executado no registro correto, só que ele muda a sequencia do registro quando faço o select.

Exemplo:

No banco cliente tenho 2 registros...

codigo: 1

nome: joao

codigo: 2

nome: maria

Quando faço uma select, o retorno é uma lista com a seguinte ordem: 1 - 2

UPDATE cliente SET nome = 'mario' WHERE codigo = 1;

Após executar o comando de update, logo em seguida quando faço outra select, ele joga o registro que eu fiz a atualização para o último da lista, tendo então: 2 - 1

Só gostaria de saber se tem como manter o registro em sua mesma posição da lista sem ter que dar order by, pois tem tabela que não utilizo auto-incrementação.

Link para o comentário
Compartilhar em outros sites

  • Moderador

então amigo, é ai que esta seu problema. usando o sequence, toda vez que você fizer uma açao no registro.. seja um insert, um delete ou um update set, vai perder a sequencia. eu considero isso um auto increment versao gambiarra.

é pra isso que existe o auto_increment é a melhor maneira de arrumar isso se você nao quiser ficar dando um order by.

então amigo.. sugiro que você faça um alter table.. e mude sua PK para auto increment

Link para o comentário
Compartilhar em outros sites

  • Moderador

bom.. eu nao havia visto que estavas usando o postgree.

realmente nao sei muito sobre o postgree eu prefiro usar o mysql mesmo. é questao de costome mesmo..

mas andei pesquisando você usou a funçao NEXTVAL() quando criou sua tabela com a sequencia de auto incremento?

Link para o comentário
Compartilhar em outros sites

  • Moderador

com mais pesquisas cheguei a uma possivel solução para você.. você ja tentou usar um alter sequence? talvez no postgree tem que fazer um reajuste comn esse alter sequence depois de ter feito um update set ou criar sua sequencia com serial?

acho q aqui deve ter alguma coisa que te ajude: http://pgdocptbr.sourceforge.net/pg80/datatype.html#DATATYPE-SERIAL

enfim... pelo menos tentei ajudar! :)

abraço

Link para o comentário
Compartilhar em outros sites

acho q aqui deve ter alguma coisa que te ajude: http://pgdocptbr.sourceforge.net/pg80/datatype.html#DATATYPE-SERIAL

O tipo SERIAL é a mesma coisa coisa que criar uma SEQUENCE, a diferença apenas é que o SERIAL cria automatico a SEQUENCE, mas por trás é igual e o campo continua um INTEGER.

ALTER SEQUENCE é um comando pra alterar uma SEQUENCE, podendo voltar a sequência a um determinado valor, mudar a incrementação, etc...

Creio que é alguma configuração mesmo.

enfim... pelo menos tentei ajudar! :)

Mas valeu pela ajuda, pelo menos mostrou interesse! Obrigado.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!