Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Acione para ignorar/excluir silenciosamente entradas duplicadas em INSERT


Antes do mysql 5.5. não foi possível parar uma inserção dentro de um gatilho. Lá onde alguns trabalhos feios, mas nada que eu recomendaria. Desde 5.5 você pode usar SIGNAL para fazê-lo.
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 ;