sql >> Base de Datos >  >> RDS >> Mysql

Desencadenar para ignorar/eliminar silenciosamente entradas duplicadas en INSERTAR

Antes de mysql 5.5. no era posible detener una inserción dentro de un gatillo. Allí donde hubo algunas soluciones feas, pero nada que recomendaría. Desde 5.5 puedes usar SIGNAL para hacerlo.

delimiter //
drop trigger if exists aborting_trigger //
create trigger aborting_trigger before insert on t
for each row
begin
  set @found := false;
  select true into @found from t where a=new.a and b=new.b;

  if @found then
    signal sqlstate '45000' set message_text = 'duplicate insert';
    end if;
  end   //

delimiter ;