gpt4 book ai didi

sql - 删除前Postgres触发器检查数量

转载 作者:行者123 更新时间:2023-11-29 12:39:43 26 4
gpt4 key购买 nike

我正在尝试在触发器之前创建一个 postgres,以在实际删除之前检查将要删除的记录数量。例如不删除超过 5 条记录

最佳答案

您可以使用 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();

关于sql - 删除前Postgres触发器检查数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56988193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com