【发布时间】:2020-02-25 11:40:24
【问题描述】:
我正在创建一个触发函数来自动删除记录,如果该数据超过了时间限制。
这是代码-
CREATE FUNCTION delete_old_rows() RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
row_count int;
BEGIN
DELETE FROM tablename1 WHERE timestamp < NOW() - INTERVAL '1 day';
IF found THEN
GET DIAGNOSTICS row_count = ROW_COUNT;
RAISE NOTICE 'DELETEd % row(s) FROM tablename1', row_count;
END IF;
RETURN NULL;
END;
$$;
我收到以下错误- 错误:“CREATE”处或附近的语法错误 第 5 行:AS $BODY$CREATE FUNCTION delete_old_rows() RETURNS 触发器。
【问题讨论】:
-
那是perfectly valid - 您使用哪个工具来运行它?你的确切 Postgres 版本是什么(
select version();会告诉你) -
11.5版本...
-
您应该使用不同的客户端,该客户端不会在美元引号分号处拆分 SQL 字符串。
-
我用的是 PGadmin4 ,你能解释一下吗?
-
您可能有一些不可见的字符导致了这种情况。将其复制并粘贴到notepad++之类的文本编辑器中,将其设置为显示所有字符,然后查看是否有任何可疑之处。尤其是当您从某些网页或带有格式化字符的文档中复制/粘贴任何部分时,可能会发生这种情况。
标签: postgresql