Supabase触发器中NEW引用自动生成ID为NULL的问题排查与解决
问题原因与修复方案
问题根源
你当前的触发器是语句级触发器(FOR EACH STATEMENT),这类触发器触发时,NEW变量并不指向任何具体的插入行——它只有在**行级触发器(FOR EACH ROW)**中才会包含刚插入行的完整数据(包括自动生成的id字段)。这就是user_x表的x_id插入为NULL的核心原因。
修复步骤
只需修改触发器定义,把触发级别从FOR EACH STATEMENT改为FOR EACH ROW,这样触发器会对每一行插入操作单独触发,NEW.id就能正确获取到x表中刚生成的主键值:
CREATE TRIGGER add_user_x AFTER INSERT ON public.x FOR EACH ROW EXECUTE FUNCTION add_user_x();
验证说明
修改完成后,向public.x插入数据时,行级触发器会针对每一条新插入的记录调用add_user_x函数,此时NEW.id就是这条记录在x表中自动生成的id,最终能正确填充到user_x的x_id字段里。
内容的提问来源于stack exchange,提问作者nikostra
相关产品推荐
相关产品推荐

