Anda dapat mencapainya dengan pemicu tingkat pernyataan SETELAH DELETE. Di dalam fungsi pemicu, Anda dapat menghitung jumlah baris yang terpengaruh dan memberikan pengecualian jika hitungannya terlalu tinggi. Pengecualian akan memaksa pembatalan transaksi yang memulai penghapusan.
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;
Dan kemudian buat pemicunya:
create trigger prevent_mass_delete
after delete on the_table
referencing old table as old_table
for each statement
execute procedure prevent_delete();