sql >> データベース >  >> RDS >> Mysql

INSERTで重複するエントリをサイレントに無視/削除するトリガー

    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 ;
    


    1. MySQLで外部キー列の名前を変更する

    2. 長いPHPスクリプトを実行しているときにメモリをクリアするにはどうすればよいですか? unset()を試しました

    3. MySQL:アッパーキャメルケース(パスカルケース)でテーブルに名前を付けることはできません

    4. (null)値をPIVOTの0出力に置き換える方法