为什么在使用PL/PgSQL函数存取临时表时会收到错误信息“relation with OID ##### does not exist”?

参与4

1同行回答

努力呀努力呀数据库运维工程师XX
PL/PgSQL 会缓存函数的内容,由此带来的一个不好的副作用是若一个 PL/PgSQL 函数访问了一个临时表,然后该表被删除并重建了,则再次调用该函数将失败, 因为缓存的函数内容仍然指向旧的临时表。解决的方法是在 PL/PgSQL 中用 EXECUTE 对临时表进行访问。这样会保证查询在执行...显示全部

PL/PgSQL 会缓存函数的内容,由此带来的一个不好的副作用是若一个 PL/PgSQL 函数访问了一个临时表,然后该表被删除并重建了,则再次调用该函数将失败, 因为缓存的函数内容仍然指向旧的临时表。解决的方法是在 PL/PgSQL 中用 EXECUTE 对临时表进行访问。这样会保证查询在执行前总会被重新解析。

收起
银行 · 2020-02-04
浏览2204

提问者

yuansuiyun
数据库架构师LL

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-02-03
  • 关注会员:2 人
  • 问题浏览:2882
  • 最近回答:2020-02-04
  • X社区推广