PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Сума за проверка на задействане на Postgres преди изтриване

Можете да постигнете това с тригер на ниво израз AFTER DELETE. Вътре в тригерната функция можете да преброите броя на засегнатите редове и да хвърлите изключение, ако броят е твърде висок. Изключението ще наложи връщане назад на транзакцията, която е инициирала изтриването.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявката за търсене на Django Admin не достига индекса на Postgres

  2. Как използвате променливи в прост PostgreSQL скрипт?

  3. SELECT от една таблица, INSERT в две други таблици въз основа на условие

  4. Създайте голямо цяло число от големия край на uuid в PostgreSQL

  5. Агрегиране по средна стойност в SQL