Ajuda com postgre!

3 respostas
A

olá galera acabei de entrar no forum e ja estou postando problemas… :oops: :oops: :oops:

seguinte tenho esta tabela

CREATE TABLE tabela
(
  campo1 integer NOT NULL DEFAULT nextval('sequc'::regclass),
  campo2 character varying(10),
  campo3  character varying(35),
  CONSTRAINT campo1_pk  PRIMARY KEY (campo1 cod)
) 
WITHOUT OIDS;
ALTER TABLE uc OWNER TO postgres;

e uso a seguinte consulta para ler em blocos o banco

select * from uc limit 50 offset 50

os registros sao retornados na ordem correta!!!

ae eu executo um update em um registro que foi retornado na consulta (update tabela set campo2=‘nada’ where campo1 = 55 ) e volto a realizar a consulta para ler um novo bloco…

e os registros naum voltam mais ordenados!!!

o que acontece de errado?!?!?!?!?!?! :!: :?: :!: :?:

3 Respostas

T

Nenhum banco SQL que se preza tem a obrigação de voltar os dados ordenados se você não usa um ORDER BY.

Aliás, evite usar SELECT * - isso é uma grande fonte de problemas em programas, porque você nunca fica sabendo se alguma alteração em “schema” de tabelas quebra ou não algum seu programa. Liste sempre todas as colunas usadas, mesmo que sejam 20 ou 30.

A

thingol:
Nenhum banco SQL que se preza tem a obrigação de voltar os dados ordenados se você não usa um ORDER BY.

Aliás, evite usar SELECT * - isso é uma grande fonte de problemas em programas, porque você nunca fica sabendo se alguma alteração em “schema” de tabelas quebra ou não algum seu programa. Liste sempre todas as colunas usadas, mesmo que sejam 20 ou 30.

tente usar um order by em uma tabela de milhoes e veja o que acontece… se vc tiver tempo…

o que eu quero é ler de maneira rapida e simples… como eu uso indice neste caso? tem como setar ele???

ps:outra coisa o * é apenas um exemplo no codigo… pode substituir por campo2, campo3… mas o problema ainda continua…

T

CONSTRAINT campo1_pk PRIMARY KEY (campo1 cod)

se você disse que a chave primária é Campo1, então muitos bancos (mesmo sem a cláusula ORDER BY) costumam manter os dados ordenados pela chave primária (e é por isso que você disse que os dados vinham ordenados).
Não sei se no caso do PostgreSQL ele funciona assim quando você efetua um UPDATE. De qualquer maneira, é melhor pôr um índice em vez de ficar “confiando” em uma coisa que “parece” funcionar de vez em quando.

http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.1

*(Como de costume, o nome do banco não é “postgree” nem “postegree” como já vi escrito por aí, mas PostgreSQL. Não é nem mesmo Postgres - que é um banco que deu origem ao PostgreSQL).

Criado 18 de junho de 2007
Ultima resposta 18 de jun. de 2007
Respostas 3
Participantes 2