如何在 PostgreSQL 触发器中访问 Hasura session_variables

Rit*_*ari 7 postgresql triggers hasura

我想使用触发器函数限制单个用户 ( ) 向PostgreSQL表的插入。每个人最多应该能够创建5秒。我还尝试访问Hasura session_variables,其中包含用于识别.departmentbusinessbusiness department x-hasura-business-idbusiness

控制台显示有关不存在的 postgres 函数的错误,我认为我没有使用该函数to

我尝试创建的 SQL 函数的代码是

--- Create function to check business's department count
CREATE FUNCTION check_dpt_quota()
RETURNS trigger AS $$
    DECLARE department_count INTEGER;
    DECLARE session_variables JSON;
    
    BEGIN
        session_variables := current_setting('hasura.user', 't');
        
        SELECT count(*) INTO department_count FROM "public"."department"
            WHERE business_id = (session_variables ->> 'x-hasura-business-id')::uuid;
        
        IF department_count > 4 THEN
            RAISE EXCEPTION 'Error: Department Quota Exceeded';
        END IF;
        
        RETURN NEW;
    END;
$$ LANGUAGE plpgsql;

--- Create trigger to run function before INSERT
CREATE TRIGGER insert_department BEFORE INSERT ON "public"."department" FOR EACH ROW EXECUTE PROCEDURE check_dpt_quota();
Run Code Online (Sandbox Code Playgroud)

我在通过Hasura 控制台创建 SQL 函数时遇到的错误是

[
    {
        "definition": {
            "schema": "public",
            "name": "to"
        },
        "reason": "in function \"to\": no such function exists in postgres : \"to\"",
        "type": "function"
    }
]
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么,并且错误消息的描述性不足以让我理解。有人可以帮我处理这段代码吗?