在 Supabase 中创建触发器函数以更新另一个表中的字段时遇到问题

问题描述 投票:0回答:1

我目前正在使用 Supabase 开发一个项目,但在创建触发器函数来更新另一个表中的字段时遇到问题。

场景如下:

我的 Supabase 数据库中有两个表:

  1. 员工表,包含以下列:id、name 和 team_id。
  2. 团队表,包含以下列:代码、姓名、员工计数。

我希望每当将员工添加到特定团队或从特定团队中删除员工时,都会更新“团队”表中的“employeeCount”字段。

我尝试在 Supabase 中创建一个触发器函数来实现此目的,但我遇到了语法错误或触发器本身的问题。这是我尝试创建的函数:

CREATE OR REPLACE FUNCTION update_employee_count()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
BEGIN
    IF TG_OP = 'INSERT' THEN
        UPDATE Team
        SET employeeCount = employeeCount + 1
        WHERE code = NEW.team_id;

    ELSIF TG_OP = 'DELETE' THEN
        UPDATE Team
        SET employeeCount = employeeCount - 1
        WHERE code = OLD.team_id;
    END IF;

    RETURN NEW;
END;
$$;

当我尝试创建此函数时,收到一条错误消息,指示 CREATE 语句附近存在语法错误。

有人可以帮助我确定我的功能可能存在的问题或建议替代方法来实现预期结果吗?任何见解将不胜感激。

谢谢!

database function triggers supabase
1个回答
0
投票

将员工计数放在员工表中可能不是最好的主意,相反,您应该有一个单独的表来引用员工表并动态计算关联行数。 SQL 可以非常有效地处理这个问题,并且您将始终保持数据完整性。

© www.soinside.com 2019 - 2024. All rights reserved.