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