小编Man*_*bes的帖子

未修改主表时获取插入的行数

我有一个分区表,其中数据仅驻留在子表中。主表有一个插入触发器,可以将插入的数据分配到适当的子表中。

现在,我需要创建一个 PL/pgSQL 过程,该过程从(主)表中选择一些数据并使用一些更改的值重新插入它。

通常我会使用ROW_COUNT诊断变量并完成它。问题是 ROW_COUNT 始终为 0,因为主表中没有插入任何内容(触发器在途中捕获并重定向插入)。

我的下一个想法是做类似的事情

WITH inserted AS (
  INSERT INTO master (...) SELECT ... FROM master WHERE ... RETURNING master.field
) SELECT count(*) FROM inserted INTO rowcount;
Run Code Online (Sandbox Code Playgroud)

但是,再次,rowcount 总是最终为 0,因为没有实际插入到主表中。

如果我做

WITH insertable AS (
  SELECT ... FROM master WHERE ...
), blah AS (
  SELECT count(*) INTO rowcount FROM insertable
) INSERT INTO master SELECT * FROM insertable;
Run Code Online (Sandbox Code Playgroud)

然后 Postgresql 抱怨说:

错误:INTO 与无法返回数据的命令一起使用

SQL 状态:42601

等等...

如果是我最后的代码提取,我如何将行数inserted放入rowcount我的程序中的变量中,然后我可以用它来做东西 …

postgresql partitioning plpgsql

5
推荐指数
1
解决办法
2942
查看次数

标签 统计

partitioning ×1

plpgsql ×1

postgresql ×1