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

削除前のPostgresトリガーチェック量

    これは、AFTERDELETEステートメントレベルのトリガーを使用して実現できます。トリガー関数内で、影響を受ける行の数をカウントし、カウントが多すぎる場合は例外をスローできます。例外により、削除を開始したトランザクションのロールバックが強制されます。

    create function prevent_delete()
      returns trigger
    as
    $BODY$ 
    declare
      l_count integer;
    begin 
      select count(*)
        into l_count
      from old_table;
    
      if l_count > 5 then 
        raise exception 'Too many rows would be deleted';
      end if; 
      return null;
    end; 
    $BODY$ 
    LANGUAGE plpgsql;
    

    そして、トリガーを作成します:

    create trigger prevent_mass_delete 
       after delete on the_table
       referencing old table as old_table
       for each statement 
       execute procedure prevent_delete();
    



    1. SQLServerのSelectステートメントでWhere句を使用する方法-SQLServer/TSQLチュートリアルパート109

    2. '挿入'関数がMySQLdbを使用して行を追加しないのはなぜですか?

    3. EclipseHibernateアプリケーション内でPostgresを使用して関係が見つかりません

    4. Mysql:他のSQLスクリプトファイルからSQLスクリプトファイルを呼び出す方法は?