Postgresql - 在插入后将“插入”行作为json“返回”

时间:2014-11-15 15:58:40

标签: json postgresql

我正在尝试在INSERT语句之后使用“RETURNING”关键字以允许将插入的行数据作为json返回 - 我想要所有字段。这是我尝试过没有成功的事情:

CREATE OR REPLACE FUNCTION createUser(  
  email_f character varying(50),  
  nickname_f character varying(16)
) RETURNS json AS $$  
BEGIN  
  INSERT INTO users (email,nickname)  
    SELECT email_f,nickname_f  
    RETURNING row_to_json(row(*));  
END;   
$$ LANGUAGE 'plpgsql'; 

这给了我一个错误:ERROR:语法错误在“*”或附近

我在这里做错了什么?我想继续使用“Returning”关键字,因为它似乎是最好的方式 - 只要我能让它工作......

2 个答案:

答案 0 :(得分:1)

您可能会获得更多成功:

row_to_json(users.*)

答案 1 :(得分:0)

您可以使用中间变量正确执行此操作:

CREATE OR REPLACE FUNCTION createUser(  
  email_f character varying(50),  
  nickname_f character varying(16)
) RETURNS json AS $$  

declare temp_variable users%rowtype;

BEGIN  

  INSERT INTO users (email,nickname)  
    SELECT email_f,nickname_f  
  RETURNING * 
  into temp_variable;  

return row_to_json(temp_variable);

END;   
$$ LANGUAGE 'plpgsql'; 

RETURNING *