Postgres 触发器函数 if jsonb 数组上的语句
Postgres trigger function if statement on jsonb array
如果用户具有特定角色,我正在尝试插入另一个 table。角色当前作为 json 数组 [{'type': 'ADMIN'}]
存储在用户对象中
我的代码如下
BEGIN
IF NEW.roles->'type' @> '"ADMIN"' THEN
// INSERT INTO new_table
END IF;
RETURN NEW;
END;
如果角色存在,则永远不会插入该行。有没有办法在 jsonb 上执行 IF 语句?
因为roles
是一个数组,所以需要测试一个数组元素:
IF NEW.roles @> '[{"type": "ADMIN"}]'
或者,如果您知道数组只包含一个元素,您可以通过索引访问该值:
IF NEW.roles -> 0 ->> 'type' = 'ADMIN'
如果用户具有特定角色,我正在尝试插入另一个 table。角色当前作为 json 数组 [{'type': 'ADMIN'}]
我的代码如下
BEGIN
IF NEW.roles->'type' @> '"ADMIN"' THEN
// INSERT INTO new_table
END IF;
RETURN NEW;
END;
如果角色存在,则永远不会插入该行。有没有办法在 jsonb 上执行 IF 语句?
因为roles
是一个数组,所以需要测试一个数组元素:
IF NEW.roles @> '[{"type": "ADMIN"}]'
或者,如果您知道数组只包含一个元素,您可以通过索引访问该值:
IF NEW.roles -> 0 ->> 'type' = 'ADMIN'