Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Trigger zum stillschweigenden Ignorieren/Löschen doppelter Einträge bei INSERT

Vor MySQL 5.5. Es war nicht möglich, einen Insert innerhalb eines Triggers zu stoppen. Dort gab es einige hässliche Workarounds, aber nichts, was ich empfehlen würde. Seit 5.5 können Sie SIGNAL verwenden zu tun.

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 ;