Mysql
 sql >> Base de données >  >> RDS >> Mysql

Déclencheur pour ignorer/supprimer silencieusement les entrées en double sur INSERT

Avant mysql 5.5. il n'était pas possible d'arrêter un insert à l'intérieur d'un déclencheur. Là où quelques vilains contournements mais rien que je recommanderais. Depuis 5.5, vous pouvez utiliser SIGNAL pour le faire.

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 ;