解释问题的最简单方法是使用审计触发器。
但是,在插入时它会保存所有值,包括空值。我想过滤掉hstore(NEW.*)
. 最简单/最快的方法是什么?
来源:https ://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql#L134
audit_row.row_data = hstore(NEW.*) - excluded_cols;
这显然不起作用,但希望能解释答案的样子。
audit_row.row_data = hstore(hstore(NEW.*) FILTER (WHERE value IS NOT NULL)) - excluded_cols;
首选将回答不使用用户创建的函数,例如仅使用 Postgres 函数/运算符。
这适用于 >= PostgreSQL 11。
我正在寻找一个解决方案hstore
,而不是json
或jsonb
。json
具有或jsonb
可以包括的替代方式,但是hstore
是优选的。