在PostgreSQL 10中,我需要执行这样的SQL命令:
select id from table1 where id='859'::text
当然会导致错误,所以我创建了这样的CAST:
CREATE FUNCTION to_int(text)
RETURNS integer
STRICT IMMUTABLE LANGUAGE SQL AS
'SELECT cast($1 as integer);';
CREATE CAST (text AS integer) WITH FUNCTION to_int(text) as Implicit;
但是,在执行select id from table1 where id='859'::text
命令后,PostgreSQL抛出异常max_stack_depth
。
知道如何解决这个问题吗?
答案 0 :(得分:0)
您的通话是无限递归的。在演员表功能中,您调用演员表。
您会收到错误消息,因为此无限循环达到了最大可能的递归深度。
阅读this old blog post,了解如何正确创建这样的演员表。
但是,最好的办法是不要这样做并修复您的代码。删除这些演员表是有原因的;他们会产生歧义。