postgresql - 如何将插入查询返回的值分配给 PL/pgSQL 中的变量
问题描述
我正在尝试在 Postgres 中创建一个执行简单插入的函数,并且我想要插入的 id 以供以后使用。但是我被说'Synatx error near ('在行question_key := INSERT INTO QUESTIONS(question, status, questionword) values (in_question, 'unanswered', in_questionword) RETURNING q_key;
这是正确的分配方式吗?
CREATE OR REPLACE FUNCTION insert_new_record_hackathon(
in_keywords character varying[],
in_question text,
in_questionword character varying)
RETURNS void AS
$BODY$
DECLARE
i integer;
question_key integer;
keyword_key integer;
BEGIN
question_key := INSERT INTO QUESTIONS(question, status, questionword) values (in_question, 'unanswered', in_questionword) RETURNING q_key;
FOREACH i in ARRAY in_keywords
LOOP
keyword_key := INSERT INTO keywords(keyword) VALUES (in_keywords[i]) RETURNING k_key;
INSERT INTO qnkeywordmap(q_key, k_key) values (question_key, keyword_key)
END LOOP;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
解决方案
INSERT ... RETURNING
它与INTO
子句一起使用的正确方法:
INSERT INTO keywords ...
RETURNING k_key INTO keyword_key;
推荐阅读
- c# - Atata - 如何访问隐藏菜单
- python-3.x - len() 函数没有给出正确的字符数
- python - 如何使用屏幕并包含命令行标志
- java - groovy.lang.MissingMethodException:没有方法签名:java.util.ArrayList
- google-drive-api - 如何在 Google Drive 上禁止/解决递归权限?
- ios - 在 Swift 4 中,如何创建明亮/闪亮/发光的视图?
- python - lstm 自动编码器时间序列数据输入形状
- swift - Swift - 字符串的最后一个索引
- python - 使用 docker python API 在特定 IP 上运行容器
- java - 我的程序在模拟器上运行良好,但在手机上崩溃