我有一个系统,我们执行大量的插入和更新查询(也有一些upsert)
我看到我的日志偶尔会出现错误.
PG::ObjectNotInPrerequisiteState: ERROR: attempted to delete invisible tuple
INSERT INTO call_records(plain_crn,efd,acd,slt,slr,ror,raw_processing_data,parsed_json,timestamp,active,created_at,updated_at) VALUES (9873,2016030233,'R',0,0,'PKC01','\x02000086000181f9000101007 ... ')
Run Code Online (Sandbox Code Playgroud)
即使没有执行(删除)查询(上面的错误出现在insert子句中),我仍然无法理解但是引发了错误.
我一直在谷歌搜索这个问题,但没有确凿的证据表明为什么会这样.
database=# select version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 9.5.2 on x86_64-apple-darwin14.5.0, compiled by Apple LLVM version 7.0.0 (clang-700.1.76), 64-bit
(1 row)
Run Code Online (Sandbox Code Playgroud)
任何线索?
我一直在阅读有关 Postgres 中的 With Query 的内容。这就是我惊讶的地方
WITH RECURSIVE t(n) AS (
VALUES (1)
UNION ALL
SELECT n+1 FROM t WHERE n < 100
)
SELECT sum(n) FROM t;
Run Code Online (Sandbox Code Playgroud)
我无法理解查询的评估是如何工作的。
关于 SQL 中递归语句的崩溃如何发生的任何见解。