0

对于我的网站(Supabase 支持的后端),我有一个论坛。我有一个表角色和论坛。

我想要的只是用与用户角色相对应的值(在角色表中找到)覆盖我在论坛表中插入时为列created_as收到的任何值。id

  • 论坛 -> 有论坛帖子
ID created_at 项目 图片 由...制作 created_as 回复计数 地位 类别 文本
1 2022-01-04T23:28:46.000Z 1 727b4ee2-d2f9-44d4-a35c-14f9cb810306 2 0 积极的 更新 Heyoo.. Wassap Supabase
2 2022-01-04T23:30:34.000Z 1 727b4ee2-d2f9-44d4-a35c-14f9cb810306 1 0 积极的 更新 旺旺..
  • 角色 -> 包含有关用户角色的数据
ID created_at 项目 姓名 由...制作 附加用户 权限级别
1 2022-01-04T22:53:28.000Z 1 工作人员 727b4ee2-d2f9-44d4-a35c-14f9cb810306 727b4ee2-d2f9-44d4-a35c-14f9cb810306 100
2 2022-01-04T22:56:47.000Z 2 质量控制 727b4ee2-d2f9-44d4-a35c-14f9cb810306 727b4ee2-d2f9-44d4-a35c-14f9cb810306 100

这是我尝试过的触发器,但它似乎没有做任何事情。

-- fills in columns that can be manipulated by the user
create or replace function public.fill_in_security_columns()
returns trigger
language plpgsql
security definer set search_path = public
as $$
  declare time_now time;
  declare my_role int;
begin
-- assumming that created_as was authenticated during RLS

  select id into my_role from public.roles where user_attached = new.created_by limit 1;
  select current_timestamp into time_now;

  set new.created_as = my_role;
  set new.created_at = time_now;
  set new.status = "active";
  return new;
end;
$$;

CREATE TRIGGER
  handle_new_forum
  BEFORE INSERT ON public.forum
  FOR EACH ROW
  EXECUTE PROCEDURE
    public.fill_in_security_columns();
4

0 回答 0