PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres wyzwala kwotę czeku przed usunięciem

Można to osiągnąć za pomocą wyzwalacza na poziomie instrukcji AFTER DELETE. Wewnątrz funkcji wyzwalacza możesz policzyć liczbę wierszy, których dotyczy problem, i zgłosić wyjątek, jeśli liczba jest zbyt wysoka. Wyjątek wymusi wycofanie transakcji, która zainicjowała usunięcie.

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;

A następnie utwórz wyzwalacz:

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. Znajdź proporcję każdego X składającego się z Y w PostgreSQL?

  2. C# łączenie się z bazą danych postgres

  3. Formatowanie ciągu znaków Psycopg2 z nazwami zmiennych do tworzenia typów

  4. Czy UUID jako klucz podstawowy w PostgreSQL da złą wydajność indeksu?

  5. Przełączanie projektu Django z backendu sqlite3 na postgresql kończy się niepowodzeniem podczas ładowania zrzutu danych