对于我的网站(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();