mysql5.5より前。トリガー内の挿入を停止することはできませんでした。いくつかの醜い回避策がありますが、私がお勧めするものは何もありません。 5.5以降では、シグナル を使用できます。 それをするために。
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 ;