PostgreSQL触发器开发:创建Chat时自动添加创建者至chat_members
解决方案:创建Chat时自动添加创建者到chat_members表
步骤1:为Chat表添加created_by字段
首先需要在Chat表中新增存储创建者ID的字段,关联到Supabase的用户表:
ALTER TABLE chat ADD COLUMN created_by UUID REFERENCES auth.users(id) NOT NULL;
步骤2:编写触发器函数
创建PL/pgSQL函数,在Chat插入完成后,自动将创建者与新Chat的关联关系插入chat_members表:
CREATE OR REPLACE FUNCTION add_creator_to_chat_members() RETURNS TRIGGER AS $$ BEGIN INSERT INTO chat_members(chat_id, user_id) VALUES(NEW.id, NEW.created_by); RETURN NEW; END; $$ LANGUAGE plpgsql SECURITY DEFINER;
注:
SECURITY DEFINER用于确保触发器拥有插入chat_members表的权限,可根据实际权限配置调整。
步骤3:绑定触发器到Chat表
将函数绑定到Chat表的AFTER INSERT事件,确保每次创建Chat时触发关联逻辑:
CREATE TRIGGER trigger_add_creator_to_members AFTER INSERT ON chat FOR EACH ROW EXECUTE FUNCTION add_creator_to_chat_members();
使用说明
在Supabase中插入Chat时,传入当前用户ID(可通过auth.uid()直接获取):
INSERT INTO chat(name, created_by) VALUES('我的专属聊天', auth.uid());
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

