我在审计表中有一个 hstore 字段,用于存储因操作而更改的所有字段。
在插入时,键updated_by
inchanged_fields
是 NULL 并且在系统更新时它被设置为system
。我想返回未定义键或未定义键的所有行,system
但我不知道如何执行此操作。
到目前为止我已经尝试过
select changed_fields -> 'updated_by'
from audit.logged_actions
where (changed_fields -> 'updated_by' != 'system'
or defined(changed_fields, 'updated_by') = false)
order by event_id desc
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我不太确定为什么。关于我做错了什么的任何想法?
dez*_*zso 11
defined()
文档中的用法:
hstore 是否包含键的非 NULL 值?
除了现有键的 NULL 值外,它还FALSE
在键不存在时返回。
为了保持干净,您可能需要使用该exist()
函数:
SELECT exist('"bla" => 1234', 'bloo');
exist
???????
f
Run Code Online (Sandbox Code Playgroud)
所以你的查询看起来像
SELECT changed_fields -> 'updated_by'
FROM audit.logged_actions
WHERE changed_fields -> 'updated_by' <> 'system'
OR NOT exist(changed_fields, 'updated_by')
ORDER by event_id desc;
Run Code Online (Sandbox Code Playgroud)
笔记:
IS
operator。 归档时间: |
|
查看次数: |
8067 次 |
最近记录: |