Ir para conteúdo

Arquivado

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

André Biasi

[Resolvido] Update

Recommended Posts

Bom dia Pessoal,

 

Preciso fazer um Update em uma coluna da tabela CD_CONTA VARCHAR2(15).

 

Porém, quero atribuir as colunas um valor "fixo" + "sequencia numérica" auto increment .

 

Por exemplo:

 

CD_CONTA = '10000'(VALOR FIXO) + 1
CD_CONTA = '10000'(VALOR FIXO) + 2
CD_CONTA = '10000'(VALOR FIXO) + 3
CD_CONTA = '10000'(VALOR FIXO) + 4

 

E assim por diante.

 

Alguém tem alguma dica para realizar este update??

 

Vlw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solução é gerar um script para atualização

 

select 'update tabela set campo=' || (100000 + rownum) || ' where chave =' || chave ||';' 
from tabela;

 

Vai gerar um result do tipo

 

UPDATE TABELA SET CAMPO = 100001 WHERE CHAVE = 1;
UPDATE TABELA SET CAMPO = 100002 WHERE CHAVE = 2;
UPDATE TABELA SET CAMPO = 100003 WHERE CHAVE = 3;
UPDATE TABELA SET CAMPO = 100004 WHERE CHAVE = 4;

 

Para executar apenas uma vez é uma boa solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Motta,

 

Vlw pela ajuda, mas seguinte, na verdade preciso fazer um select com update.

Pois atualizar direto na tabela não estou conseguindo, o atributo CD_CONTA é PK e FK.

 

 

O select é esse:

 

 

select * from conta_contabil
where   cd_empresa=2 
and substr(cd_classificacao,1,1) = 1
order by cd_classificacao

 

Como ficaria para montar um select junto com o update?

 

Desculpe se minhas dúvidas são de um nível baixo, pois faz pouco tempo que estou mexendo em sql.

 

Muito obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explique melhor por favor.

 

São duas tabelas (pai/filho) que se vai mudar a chave (pk/fk) ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explique melhor por favor.

 

São duas tabelas (pai/filho) que se vai mudar a chave (pk/fk) ?

 

 

Seguinte, preciso atualizar o cd_conta de aproximadamente 8.000 linhas. Ele é PK da tabela CONTA_CONTABIL e é FK de várias outras tabelas.

 

Como faria para atualizar este atributo na tabela(PK) e nas tabelas referenciadas(FK) conforme formatação do primeiro Post.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grosso Modo

 

Supondo CONTA_CONTABIL.campo a chave a ser mudada;

 

Desabilite a pk e as fk´s envolvidas.

 

begin
 for r in (select campo,(100000 + rownum) novo_campo from CONTA_CONTABIL)
 loop
   update CONTA_CONTABIL set campo = r.novo_campo where campo = r.campo;--pk
   -- para todas as tabelas dependentes
   update tabelax set campo = r.novo_campo where campo = r.campo;--fk
   update tabelay set campo = r.novo_campo where campo = r.campo;--fk
 end loop;
end;

 

Habilite a pk e as fk´s envolvidas.

 

De preferência faça isto sem nenhum usuário no BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grosso Modo

 

Supondo CONTA_CONTABIL.campo a chave a ser mudada;

 

Desabilite a pk e as fk´s envolvidas.

 

begin
 for r in (select campo,(100000 + rownum) novo_campo from CONTA_CONTABIL)
 loop
   update CONTA_CONTABIL set campo = r.novo_campo where campo = r.campo;--pk
   -- para todas as tabelas dependentes
   update tabelax set campo = r.novo_campo where campo = r.campo;--fk
   update tabelay set campo = r.novo_campo where campo = r.campo;--fk
 end loop;
end;

 

Habilite a pk e as fk´s envolvidas.

 

De preferência faça isto sem nenhum usuário no BD.

 

 

 

Bom dia,

 

O script consegui montar, porém quando rodo tem uma única maldita um PK que não consigo desabilitar, a CONCONT_PK, Aponta a seguinte mensagem: ORA-02297: cannot disable constraint (CONCONT_PK) - dependencies exist.

 

Existe algum comando que ignora a depencia e desabilita ela mesmo assim?

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vacilo meu, as constraints tem de ser desablitadas de baixo (fk) para cima (pk), habilitadas de cima para baixo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.