postgresql - 使用 RETURNING 子句返回 PostgreSQL 中最后插入行的 ID

标签 postgresql

我有一个非常简单的函数定义如下:

CREATE OR REPLACE FUNCTION create_new_order(....) RETURNS integer AS
$BODY$
BEGIN
    PERFORM add_points_to_usage(client_id_p, date_in_p, total_points_p);

INSERT INTO orders (...) VALUES (...)
    RETURNING ident;
END;
$BODY$ LANGUAGE plpgsql;

我苦苦挣扎的地方是如何通过 RETURNING 子句实际返回存储在 ident 字段中的值。我试过将值设置为一个变量,但要么不起作用,要么我只是弄乱了语法。

最佳答案

您缺少变量声明、INTO 子句和最后的 RETURN:

CREATE OR REPLACE FUNCTION create_new_order(....) RETURNS integer AS
$BODY$
DECLARE
  var_ident int;
BEGIN
    PERFORM add_points_to_usage(client_id_p, date_in_p, total_points_p);
    INSERT INTO orders (...) VALUES (...)
       RETURNING ident INTO var_ident;
    RETURN var_ident;
END;
$BODY$ LANGUAGE plpgsql;

关于postgresql - 使用 RETURNING 子句返回 PostgreSQL 中最后插入行的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089996/

相关文章:

java - 在 postgres jdbc 驱动程序中记录准备好的 sql 语句

sql - PostgreSQL:如何将数组传递给函数并在带有 IN 运算符的查询中使用它

sql - Oracle Select 语法到 Postgres

mysql - 如何使用表中不同数量的列来设计数据库

postgresql - 如何在postgresql中准确获取数据库大小?

postgresql - 如何将 Postgres 驱动程序添加到 Open Liberty?

postgresql - 具有已删除属性的历史表的累积计数

sql - 计算重复率队列的百分比

java - PostgreSQL JDBC 中 int/numeric 列上的 PreparedStatement.setString

json - 在 postgres 中使用文本和 json