Boa tarde Evandro.
 
Acredito que. se vc utilizar uma SubSelect ordernada resolverá. seu problema.
Exemplo:
  
UPDATE  MENU
  SET MENU_NIVEL1 = (aux.MENU_NIVEL1-1)
 from
    (select
       MENU_NIVEL1,
       MENU_USUARIO
     from
       MENU
     order by MENU_NIVEL1 ) AUX
WHERE
  MENU.MENU_USUARIO = AUX.MENU_USUARIO AND
  MENU.MENU_USUARIO = :MENU_USUARIO AND
  MENU.MENU_NIVEL1 > :MENU_NIVEL1

Espero que ajude.
   Mauro Lemos Júnior


 
----------------------------------------------------------------------
BOM DIA PESSOAL
TENHO UMA TABELA CHAMADA MENU COM AS SEGUINTES COLUNAS:

  "menu_usuario" CHAR(20) NOT NULL,
  "menu_nivel1" NUMERIC(3,0) NOT NULL,
  "menu_nivel2" NUMERIC(3,0) NOT NULL,
  "menu_nivel3" NUMERIC(3,0) NOT NULL,
  "menu_nivel4" NUMERIC(3,0) NOT NULL,
  "menu_descricao" VARCHAR(80) NOT NULL,
  "menu_form" VARCHAR(30),
  "menu_dll" VARCHAR(100),
  "menu_imagem" NUMERIC(2,0) DEFAULT 0,
  "menu_finalidade" VARCHAR(500),
  "menu_abertura" NUMERIC(1,0),

  CONSTRAINT "menu_pkey" PRIMARY KEY("menu_usuario", "menu_nivel1",
"menu_nivel2", "menu_nivel3", "menu_nivel4"),

PRECISO FAZER UM UPDATE PARA "SUBIR" O CAMPO MENU_NIVEL1 1 NÍVEL
QUANDO USO O CÓDIGO ABAIXO, ELA DÁ ERRO DE CHAVE DUPLICADA

UPDATE MENU SET MENU_NIVEL1 = (MENU_NIVEL1 -1) WHERE MENU_USUARIO =
:MENU_USUARIO AND MENU_NIVEL1 > :MENU_NIVEL1

ACONTECE QUE O UPDATE NÃO ESTA SEGUINDO A ORDEM DA CHAVE PRIMÁRIA ENTÃO
ELE ATUALIZA POR EXEMPLO O LINHA 3 ANTES DE ATUALIZAR A LINHA 2, E COMO
A LINHA 2 JÁ EXISTE E AINDA NÃO FOI ATUALIZADA, ELA DÁ ERRO DE CHAVE
DUPLICADA
ANDEI PESQUISANDO E VI QUE NO ORACLE VC PODE USAR O ORDER BY NO UPDATE,
MAS NÃO ENCONTREI NADA PARA RESOLVER O PROBLEMA NO POSTGRESQL

ALGUÉM CONHECE ALGUMA SOLUÇÃO PARA O PROBLEMA ?

EVANDRO ANDERSEN
DESENVOL INFORMÁTICA
(43) 3323-4641

POSTGRESQL 8.2.4
WIN 2003


Torpedo Messenger- Envie torpedos do messenger para o celular da galera. Descubra como aqui!
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a