【发布时间】:2021-04-07 07:56:10
【问题描述】:
[免责声明:这个问题是由我们的一位 YugabyteDB 用户在我们的 yugabyte.com/slack 频道上提出的]
下面的触发器文档提供了一个将触发器附加到员工表更新的示例。
https://docs.yugabyte.com/latest/explore/ysql-language-features/triggers/
假设您有一个程序,如果员工是经理的直接下属,则仅允许经理调动该员工,如下所示:
#transfer_employee(manager_no, employee_no, department)
CREATE OR REPLACE PROCEDURE transfer_employee(integer, integer, text)
LANGUAGE plpgsql
AS $$
BEGIN
-- IF employee reports to mgr, allow mgr to transfer person
IF EXISTS (SELECT employee_no FROM mgr_table where mgr_id = $1 and employee_no = $2)
UPDATE employees
SET department = $3
WHERE employee_no = $2;
COMMIT;
END;
$$;
YugabyteDB 中是否有办法让触发器获得访问权限,或将存储过程的状态变量传递给触发器,以便您可以将变量登录到表中,例如进行更改的manager_id,以及不只是新旧部门(例如,这是一个只存在于存储过程上下文中的变量)?
如果可能的话,从这个示例中我不清楚执行此操作的语法。
【问题讨论】:
标签: yugabyte-db