无法创建函数:“*”处或附近的语法错误
Failed to create function: Syntax error at or near "*"
我正在尝试使用以下代码在 Supabase 中创建触发器,这将帮助我更新另一个 table 中的特定值。以下是supabase函数的触发代码
BEGIN
DECLARE num integer;
SELECT count(*) into num FROM chapters
WHERE seriesid=new.seriesid;
INSERT INTO public.series(chapcount);
WHERE id=new.seriesid;
values(num);
RETURN new;
END;
但是,我得到以下错误Failed to create function: Syntax error at or near "*"
有多个错误as you can see in the manual
DECLARE
部分位于 之前 BEGIN。
并且 documented in the manual INSERT 语句没有 WHERE 子句。
因此,假设您已经正确掌握了函数(或过程)的其余部分(您没有向我们展示,PL/pgSQL 块需要如下所示:
DECLARE
num integer;
BEGIN
SELECT count(*)
into num
FROM chapters
WHERE seriesid = new.seriesid;
INSERT INTO public.series(id, chapcount);
values(new.seriesid, num);
RETURN new;
END;
我不清楚您对 INSERT 语句的意图。如果您尝试更改 现有 行,则需要 UPDATE 语句:
UPDATE public.series
SET chapcount = num
WHERE id = new.seriesid;
请注意,如果触发器定义为在 series
table 上触发,那么您根本不需要更新。使其成为 BEFORE
触发器并简单地分配新计数:
new.chapcount := num;
return new;
我正在尝试使用以下代码在 Supabase 中创建触发器,这将帮助我更新另一个 table 中的特定值。以下是supabase函数的触发代码
BEGIN
DECLARE num integer;
SELECT count(*) into num FROM chapters
WHERE seriesid=new.seriesid;
INSERT INTO public.series(chapcount);
WHERE id=new.seriesid;
values(num);
RETURN new;
END;
但是,我得到以下错误Failed to create function: Syntax error at or near "*"
有多个错误as you can see in the manual
DECLARE
部分位于 之前 BEGIN。
并且 documented in the manual INSERT 语句没有 WHERE 子句。
因此,假设您已经正确掌握了函数(或过程)的其余部分(您没有向我们展示,PL/pgSQL 块需要如下所示:
DECLARE
num integer;
BEGIN
SELECT count(*)
into num
FROM chapters
WHERE seriesid = new.seriesid;
INSERT INTO public.series(id, chapcount);
values(new.seriesid, num);
RETURN new;
END;
我不清楚您对 INSERT 语句的意图。如果您尝试更改 现有 行,则需要 UPDATE 语句:
UPDATE public.series
SET chapcount = num
WHERE id = new.seriesid;
请注意,如果触发器定义为在 series
table 上触发,那么您根本不需要更新。使其成为 BEFORE
触发器并简单地分配新计数:
new.chapcount := num;
return new;