【问题标题】:Postgres trigger function if statement on jsonb arrayjsonb数组上的postgres触发函数if语句
【发布时间】:2020-09-23 04:28:15
【问题描述】:

如果用户具有特定角色,我正在尝试插入另一个表。角色当前作为 json 数组存储在用户对象上 [{'type': 'ADMIN'}]

我的代码如下

BEGIN
    IF NEW.roles->'type' @> '"ADMIN"' THEN
        // INSERT INTO new_table
    END IF;
    RETURN NEW;
END;

如果角色在那里,则永远不会插入该行。有没有办法在jsonb上做IF语句?

【问题讨论】:

    标签: postgresql if-statement jsonb


    【解决方案1】:

    由于roles是一个数组,你需要测试一个数组元素:

    IF NEW.roles @> '[{"type": "ADMIN"}]'
    

    或者,如果您知道数组仅包含单个元素,则可以通过索引访问该值:

    IF NEW.roles -> 0 ->> 'type' = 'ADMIN'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多