如何在Supabase触发器中访问受保护的auth.users表?
解决Supabase触发器无法访问auth.users表的问题
Supabase控制台的触发器UI默认只展示public模式下的表,auth模式的表(比如auth.users)属于系统受保护表,无法通过UI直接选择,必须通过SQL编辑器手动创建触发器。具体操作步骤如下:
- 打开Supabase控制台的SQL编辑器,切换到目标项目
- 创建触发器处理函数,示例逻辑为同步用户数据到
public.profiles表(可根据需求自定义逻辑):
CREATE OR REPLACE FUNCTION handle_user_change() RETURNS TRIGGER AS $$ BEGIN -- 处理INSERT事件:新增用户时同步到profiles表 IF TG_OP = 'INSERT' THEN INSERT INTO public.profiles (id, email) VALUES (NEW.id, NEW.email); -- 处理UPDATE事件:更新用户信息时同步更新 ELSIF TG_OP = 'UPDATE' THEN UPDATE public.profiles SET email = NEW.email WHERE id = NEW.id; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql SECURITY DEFINER;
- 创建触发器关联
auth.users表,指定触发时机和执行函数:
CREATE TRIGGER on_user_change AFTER INSERT OR UPDATE ON auth.users FOR EACH ROW EXECUTE FUNCTION handle_user_change();
- (可选)如果需要让认证用户访问
auth.users的基础数据,添加权限配置:
GRANT USAGE ON SCHEMA auth TO authenticated; GRANT SELECT ON auth.users TO authenticated;
执行完以上SQL后,触发器就会监听auth.users表的插入和更新操作,按照定义的逻辑执行后续处理。
内容的提问来源于stack exchange,提问作者Julia Pak
相关产品推荐
相关产品推荐

