Pessoal,
gostaria de fazer um update com a seguinte lógica:
update tabela1
set campo1 = valor1 where condição1
set campo1 = valor2 where condição2
set campo1 = valor3 where condição3
set campo1 = valor4 where condição4
ou seja, o campo a ser atualizado é sempre o mesmo, mas o valor a ser atribuído depende de uma dada condição.
Uma alternativa seria fazer vários updates, mas eu preciso que o efeito geral de todos os updates seja percebido como atomico.
Outra alternativa seria usar locks e varios updates, mas eu nao gostaria de assumir a responsabilidade de evitar deadlocks e race conditions.
Entao, imaginei que com uma expressao condicional (veja bem, expressao condicional, e nao comando condicional) eu consigo isto. Em uma sintaxe java-like, seria algo assim:
update tabela1
set campo1 = (condição1 ? valor1 :
(condição2 ? valor2 :
(condição3 ? valor3 :
(condição4 ? valor4 : campo1))))
ou ainda
update tabela1
set campo1 = (condição1 ? valor1 :
(condição2 ? valor2 :
(condição3 ? valor3 : valor4)))
where condicao1 or
condicao2 or
condicao3 or
condicao4
Existe expressao condional no sql do Oracle???
Alguém sugere uma outra abordagem???
Valew!!!