我正在嘗試使用以下代碼在 Supabase 中創建一個觸發器,該代碼將幫助我更新另一個表中的某個值。以下是 supbase 函式的觸發代碼
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 "*"
uj5u.com熱心網友回復:
如您在手冊中所見,有多個錯誤
該DECLARE部分在BEGIN之前。
如手冊中所述,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表上觸發,那么您根本不需要 UPDATE。使其成為BEFORE觸發器并簡單地分配新計數:
new.chapcount := num;
return new;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/435667.html
標籤:PostgreSQL 功能 触发器 超级基础 超级数据库
上一篇:計算兩天SQL的ID
下一篇:創建一個快速中間件來發送電子郵件
