首页 > 解决方案 > 我是 PostgreSQL 新手,目前正在为表编写触发器。使用下面的代码

问题描述

DECLARE
    immutable_cols TEXT[] := ARRAY['id','sq_id','last_date'];
    op_value JSON;
BEGIN
    IF TG_OP = 'UPDATE' THEN
        SELECT json_agg(json_build_object('Updated', pre.key , 'From', pre.value, 'To',  post.value)) INTO  op_value 
        FROM jsonb_each(to_jsonb(OLD)) AS pre CROSS JOIN jsonb_each(to_jsonb(NEW)) AS post 
        WHERE pre.key = post.key AND pre.value IS DISTINCT FROM post.value;
        RAISE NOTICE '% ', op_value;
        IF (json_array_length(op_value) > 0 )THEN
            INSERT INTO table_name (col_1,col_2) 
            values (OLD.col_1,op_value);
            NEW.col_3 = now();
        END IF;
        IF(NEW.col_4) THEN
            INSERT INTO REQUEST_TRAIL (col_1,col_2) 
            values (OLD.col_1,json_build_object('From',OLD.col_4,'To',NEW.col_4));
            NEW.col_5=now();
        END IF;
      RETURN NEW;
    END IF;
END
$$
LANGUAGE plpgsql VOLATILE;

我有一个错误

错误:布尔类型的无效输入语法:“{”To”:“Tech”}”
上下文:IF SQL 状态的 PL/pgSQL 函数第 22 行:22P02

标签: postgresql

解决方案


推荐阅读