PGSQL.返回字段作为插入结果的功能

dio*_*ess 16 postgresql

我可以返回id作为INSERT结果,比如

INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;
Run Code Online (Sandbox Code Playgroud)

但我无法返回它并将变量赋值给我的函数

var = INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT INTO var INSERT INTO table(id,field) VALUES($id,$value) RETURNING id;
Run Code Online (Sandbox Code Playgroud)

不工作.我该怎么做?

Rom*_*kar 31

试试这个:

INSERT INTO table(id,field)
VALUES($id,$value)
RETURNING id into var;
Run Code Online (Sandbox Code Playgroud)

  • 如果你在`plpgsql`函数中使用它,你需要首先[声明](http://www.postgresql.org/docs/9.4/static/plpgsql-declarations.html)变量. (5认同)

Kir*_*bal 9

你也可以使用:

var := (INSERT INTO table(id,field) VALUES($id,$value) RETURNING id);
Run Code Online (Sandbox Code Playgroud)

可读性当然是个人偏好,但我喜欢这种语法,因为它显示了明显的分配.

  • 你用的是什么版本的postgres.我在语句上遇到语法错误.我也喜欢这种语法. (3认同)