【发布时间】:2013-03-26 01:28:27
【问题描述】:
在 PostgreSQL 中,可以将 RETURNING 放在 INSERT 语句的末尾以返回,例如,当该值由 SERIAL 类型自动设置时,该行的主键值。
如何将此值存储在可用于将值插入其他表的变量中?
请注意,我想将生成的id 插入到多个表中。据我了解,WITH 子句仅对单个插入有用。我认为这可能必须在 PHP 中完成。
这确实是糟糕设计的结果;如果没有自然键,除非您对主键有句柄,否则很难获取唯一行;
【问题讨论】:
-
您使用什么语言和客户端库?您是否尝试使用
psql执行此操作? -
我正在尝试在 .sql 脚本中执行此操作,据我了解,该脚本可以包含 plsql。如果那是必要的,那么我必须学习它。
-
PL/PgSQL 可以在
DO块和CREATE [OR REPLACE] FUNCTION中使用。 PostgreSQL 不支持 plsql,所以你不能使用它。如果您打算使用psql运行.sql脚本,您可以使用psql的反斜杠命令,如\copy和\set,但这些是psql客户端而不是服务器后端的一部分。请查看 PostgreSQL 教程。 -
说实话,我觉得这也是设计不好的结果;由于缺少自然键,完全依赖主键可能会导致丢失数据句柄的问题。
标签: sql postgresql variables primary-key common-table-expression