我有一个包含许多列的表。 需要查找哪些列的值已更改。 我正在使用以下代码。我遇到了性能问题。
我可以使用其他方法吗?
CREATE OR REPLACE FUNCTION public.mytable()
RETURNS trigger AS $$
DECLARE
_rec record;
BEGIN
FOR _rec IN
SELECT
o.key
, o.value AS old_value
, n.value AS new_value
FROM json_each(to_json(new)) n
INNER JOIN json_each(to_json(old)) o ON o.key = n.key
LOOP
IF (_rec.old_value::text IS DISTINCT FROM _rec.new_value::text) THEN
/*
field name: _rec.key,
old values: _rec.old_value,
new value : _rec.new_value
*/
END IF;
END LOOP;
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';