postgresql - 将 UUID 作为输入参数传递给触发函数 - Postgres 11.5
问题描述
我有一个这种格式的表
CREATE TABLE Responses (
Responseid uuid NOT NULL,
Response jsonb NOT NULL,
createdtime timestamp NOT NULL
);
ResponseID 由 uuid_generate 函数生成。我想在这个表上创建一个触发函数如下
CREATE OR REPLACE FUNCTION get_Response() RETURNS TRIGGER AS $get_Response$
DECLARE
ResponseName VARCHAR(100);
BEGIN
select into ResponseName Response->>'ResponseName'
from Responses
where Responseid =uuid;
IF (ResponseName = 'ABC') then
-----------
elseif (ResponseName = 'ABC') then
------------------
END IF;
RETURN NULL;
END;
$get_Queue_Info$ LANGUAGE plpgsql;
CREATE TRIGGER get_Response
AFTER INSERT ON Responses
FOR EACH ROW EXECUTE FUNCTION get_Response();
您能否建议如何将该 uuid 传递给函数
解决方案
NEW
您可以使用关键字访问最新值。要获得该Responseid
领域,您将使用NEW.Responseid
select into ResponseName Response->>'ResponseName'
from Responses
where Responseid = NEW.uuid;
但是由于您可以访问整个记录,因此您无需重新选择它。可以直接查询response
字段
select into ResponseName NEW.Response->>'ResponseName'
推荐阅读
- python - 如何用 jupyter notebook 绘制 graphviz?
- r - creating a list/ vector of text from shiny
- mysql - Mysql count duplicate value different column
- pdf - pdf分辨率的单位是什么,DPI会影响它吗
- c# - 继承 BackgroundService 和 Dispose()
- c# - 关闭 WPF 应用程序,直到功能完成
- kubernetes - 解密 kubernetes master api 调用
- wordpress - 如何添加一个始终悬停在 woocommerce 网格中每个产品上的小徽标?
- php - 如何验证laravel中的文件输入?
- swift - SDWebImage,在 indexPath.row 中获取 url 图片