Erro ORA-00001: Unique Constraint Violated

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pessoal...preciso verificar nesse mesmo insert...se o registro já existe...ele faz apenas um update na data de atualização com sysdate.
Sendo que como tem uma UK que não permite a entrada de registros duplicados..como posso fazer isso?




SQL :

Selecionar tudo

insert into TRR_ACCOUNTING (ID_ACCOUNTING, ID_CHAVE, ID_CONTADOR_OBJETO, NR_VALOR,DE_VALOR,DT_VALOR,DT_ATUALIZACAO)
Select id_accounting_seq.nextval id_accounting
, chave.id_chave id_chave
, contador_objeto.id_contador_objeto id_contador_objeto
, null  nr_valor
, 90930 de_valor
, null  dt_valor
, sysdate dt_atualizacao
from 
    (Select chav.id_chave
     from trr_chave chav
  where chav.cd_chave = '4438508#perm!terra') chave
, (select coob.id_contador_objeto id_contador_objeto
from trr_contador_objeto coob
, trr_contador cont
, trr_objeto objt
where coob.id_contador = cont.id_contador
and coob.id_objeto   = objt.id_objeto
and objt.cd_objeto   = 'POP3') contador_objeto
;
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo


MERGE INTO tabela 
USING ( os dados que você quer
ON (  sua condiçao
   )
WHEN MATCHED THEN   
  UPDATE SET   
    DT_ATUALIZACAO = valor
WHEN NOT MATCHED THEN   
  insert into TRR_ACCOUNTING (ID_ACCOUNTING, ID_CHAVE, ID_CONTADOR_OBJETO, NR_VALOR,DE_VALOR,DT_VALOR,DT_ATUALIZACAO)
Select id_accounting_seq.nextval id_accounting
, chave.id_chave id_chave
, contador_objeto.id_contador_objeto id_contador_objeto
, null  nr_valor
, 90930 de_valor
, null  dt_valor
, sysdate dt_atualizacao
from
    (Select chav.id_chave
     from trr_chave chav
  where chav.cd_chave = '4438508#perm!terra') chave
, (select coob.id_contador_objeto id_contador_objeto
from trr_contador_objeto coob
, trr_contador cont
, trr_objeto objt
where coob.id_contador = cont.id_contador
and coob.id_objeto   = objt.id_objeto
and objt.cd_objeto   = 'POP3') contador_objeto)
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

A mesma pergunta que você já tinha feito no post anterior e tinha andamento:

http://glufke.net/oracle/viewtopic.php?t=5271

O Select vai dentro do using para ser usado de base no values, em vez de ir no insert.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante