postgresql - 我是 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
解决方案
推荐阅读
- arrays - 如何找到最后一个数组的键
- angular - 有没有一种简单的方法来覆盖基本指令?
- strapi - Strapi API 调用错误:{"statusCode":403,"error":"Forbidden","message":"Forbidden"}
- c - 在以太网数据包中找到的 MAC 地址与 TCP/IP 数据包有何关系?
- bash - 如何通过cygwin终端提取zip文件?
- javascript - Webpack生产模式下JS错误但开发模式下没有 - 帮我找出原因
- java - 如何在android中导入特定版本的fabric
- mysql - 在 mysql 上从拉丁语转换为 UTF-8 - 具有特殊字符的密码会发生什么?
- android - RecyclerView插入动画不显示
- ckeditor5 - Ckeditor 5 如何以编程方式触发复制、剪切、粘贴事件