我创建触发器来存储工资金额,但是当我解雇插入查询
时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_stack_depth
的限制所以任何人都可以给我解决此错误的想法..
我还尝试在配置文件中更改max_stack_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.
答案 0 :(得分:4)
我说你在ON INSERT OR UPDATE
上有一个employees
触发器,直接或间接地对UPDATE
表执行employees
而不检查是否直接调用它或通过触发器。
这通常是编程错误,您在UPDATE
表上执行employee
而不是让BEFORE INSERT OR UPDATE ... FOR EACH ROW
触发器修改NEW
的值。< / p>
有时它是两个触发器之间的相互递归,这很难处理。不幸的是,我不知道有任何方法来检测触发器是由直接客户端语句还是通过另一个存储过程或触发器调用的。通常需要进行设计更改以避免相互递归。
答案 1 :(得分:2)
您可以发布更改max_stack_depth时收到的错误消息。
linux系统中的“ulimit -s”将给出堆栈深度。 将max_stack_depth设置为比实际服务器限制(ulimit -s)少一个或两个。设置完成后请重新加载。