tablas - update oracle ejemplo
Instrucción de inserción de Oracle si no existe (3)
La forma correcta de insertar algo (en Oracle) basada en otro registro ya existente es mediante el uso de la instrucción MERGE .
Tenga en cuenta que esta pregunta ya ha sido respondida aquí en SO:
insert into OPT (email, campaign_id) values(''[email protected]'',100)
where not exists( select * from OPT where (email ="[email protected]" and campaign_id =100)) ;
Informe de error: Error SQL: ORA-00933: el comando SQL no terminó correctamente 00933. 00000 - "El comando SQL no terminó correctamente" * Causa:
*Acción:
¿Cómo insertar una nueva fila si no existe en Oracle?
insert into OPT (email, campaign_id)
select ''mom@coxnet'' as email, 100 as campaign_id from dual MINUS
select email, campaign_id from OPT;
Si ya hay un registro con [email protected]
/ 100
en OPT, la MINUS
restará este registro del select ''mom@coxnet'' as email, 100 as campaign_id from dual
registro select ''mom@coxnet'' as email, 100 as campaign_id from dual
y no se insertará nada. Por otro lado, si no existe tal registro, el MINUS
no restará nada y se insertarán los valores mom@coxnet
/ 100
.
Como p.marino ya ha señalado, la merge
probablemente sea la mejor (y más correcta) solución para su problema, ya que está específicamente diseñada para resolver su tarea.
insert into OPT (email, campaign_id)
select ''[email protected]'',100
from dual
where not exists(select *
from OPT
where (email ="[email protected]" and campaign_id =100));