如何在PostgreSql函数的返回表中设置标识列?

如何在PostgreSql函数的返回表中设置标识列?,postgresql,stored-functions,set-returning-functions,Postgresql,Stored Functions,Set Returning Functions,你不能也不需要 identity不是数据类型,它是一个属性,用于描述插入未指定值的行时如何生成值。一旦生成并存储了列值,“identity”属性就没有意义了 因此,只需将结果列定义为integer CREATE OR REPLACE FUNCTION public."TestFunc" ( "param1" TEXT, "param2" TEXT ) RETURNS TABLE ( ---------How can I set identiy like

你不能也不需要

identity
不是数据类型,它是一个属性,用于描述插入未指定值的行时如何生成值。一旦生成并存储了列值,“identity”属性就没有意义了

因此,只需将结果列定义为
integer

CREATE OR REPLACE FUNCTION public."TestFunc"
(     
    "param1" TEXT, 
    "param2" TEXT 
) 
RETURNS TABLE  
( 
  ---------How can I set identiy like that
  "ID" integer GENERATED BY DEFAULT AS IDENTITY (START WITH 1 INCREMENT BY 1),
  "Data" TEXT
)  
AS $$
BEGIN  
    ---body...
END; 
$$ LANGUAGE plpgsql;


请给我报价。它们的麻烦远比它们的价值大。

返回表
并不意味着函数将创建一个表。这只是意味着结果看起来像一个表,也就是说,有几行。此表不是持久性的,因此指定在其中插入行时应该发生什么是没有意义的。

我没有设置“ID”,我想自动增加它。我该怎么做?@İlyasDerse:您需要在代码(主体--部分)中执行该操作,在代码中生成该函数的结果。
CREATE OR REPLACE FUNCTION public."TestFunc"
(     
    "param1" TEXT, 
    "param2" TEXT 
) 
RETURNS TABLE  
( 
  "ID" integer,
  "Data" TEXT
)  
AS $$
BEGIN  
    ---body...
END; 
$$ LANGUAGE plpgsql;