Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database postgresql中的最大堆栈深度错误_Database_Postgresql - Fatal编程技术网

Database postgresql中的最大堆栈深度错误

Database postgresql中的最大堆栈深度错误,database,postgresql,Database,Postgresql,我创建触发器来存储工资金额,但当我启动Insert查询时 INSERT INTO employees( employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id) VALUES (2002,'poiuy','patel','bhargavgor@

我创建触发器来存储工资金额,但当我启动Insert查询时

INSERT INTO employees(
            employee_id, first_name, last_name, email, phone_number,  hire_date, 
            job_id, salary, commission_pct, manager_id, department_id)
    VALUES (2002,'poiuy','patel','bhargavgor@dfghj',9898562123,'2012-07-31 00:00:00','IT_PROG',4500.00,0.00,100,60);
然后,它将显示以下设置
max\u stack\u depth
限制的错误,因此任何人都可以告诉我解决此错误的方法

我还尝试更改配置文件中
max\u stack\u depth
的值,但它不起作用

错误如下

ERROR:  stack depth limit exceeded
HINT:  Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.

当您更改最大堆栈深度时,是否可以发布您收到的错误消息

linux系统中的“ulimit-s”将给出堆栈深度。 将最大堆栈深度比实际服务器限制(ulimit-s)小一两个


设置此选项后,请重新加载。

我想说,您有一个
ON INSERT或UPDATE
触发器ON
employees
,它直接或间接地对
employees
表进行
更新,而不检查是直接调用还是通过触发器调用

这通常是一个编程错误,您在
employee
表上执行
更新
,而不是在插入或更新之前执行
。。。对于每行
触发器,修改
新建
的值

有时这是两个触发器之间的相互递归,这很难处理。不幸的是,我不知道有什么方法可以检测触发器是由直接客户端语句调用的,还是通过另一个存储的proc或触发器调用的。通常需要进行设计更改以避免相互递归


请参阅。

我没有看到触发器。也许你也应该给我们看看这个的来源。(触发器函数是递归的吗?)。我查看了文档,看看是否有任何神奇的变量来判断某个函数是否在触发器中执行。没有。但是对于那些希望增加最大堆栈深度的人,他们会如何更改设置?@bWilliamson如果需要,你可能做错了什么。PostgreSQL不太适合深度递归调用,您应该重构以使用迭代模型,或者最好使用更多的关系集操作。研究递归CTE(实际上是迭代的),即带有递归的
,是否可以帮助您。