首页 > 解决方案 > 将 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 传递给函数

标签: postgresql

解决方案


NEW您可以使用关键字访问最新值。要获得该Responseid领域,您将使用NEW.Responseid

select into ResponseName Response->>'ResponseName' 
from Responses
where Responseid = NEW.uuid;

但是由于您可以访问整个记录,因此您无需重新选择它。可以直接查询response字段

select into ResponseName NEW.Response->>'ResponseName' 

推荐阅读