gpt4 book ai didi

postgresql - 如何指定一个触发器函数只在表中有记录时才执行?

转载 作者:行者123 更新时间:2023-11-29 14:26:34 25 4
gpt4 key购买 nike

我正在使用 postgres 10.9。我在插入后创建了一个触发器函数并在表上触发器。现在当我插入一条记录时,它给我错误,因为最初表中没有数据

错误:控制到达触发过程的末尾,没有返回

如何确保函数只在表中有记录时执行?

触发函数-

create or replace function delete_old_token()
returns trigger as
$body$
begin
delete from token where timestamp < NOW() - interval '1 day';
end;
$body$
language plpgsql;

触发器-

create trigger delete_token
after insert
on token
for each row
execute procedure delete_old_token();

有什么办法可以实现吗?

最佳答案

您的问题与空表无关,它是由无效的触发器函数引起的:您忘记了 return 语句。

当您将它用于 AFTER 触发器时,实际的返回 value 是无关紧要的,但您需要返回一些东西。

create or replace function delete_old_token()
returns trigger as
$body$
begin
delete from token where timestamp < NOW() - interval '1 day';
return null; --<<< here
end;
$body$
language plpgsql;

关于postgresql - 如何指定一个触发器函数只在表中有记录时才执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57162014/

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