【问题标题】:Why use explicit schema prefix in Postgres functions?为什么在 Postgres 函数中使用显式模式前缀?
【发布时间】:2018-06-03 10:39:10
【问题描述】:

我将 Postgres 用于微服务后端,并且数据库被设计为小而简单。

我们的数据库中有四种模式:

  1. live:应用程序使用的所有函数、表格等
  2. utest:单元测试
  3. testframe:单元测试功能/框架
  4. testdata:创建通用测试数据的函数

当数据库交付生产时保留“实时”模式,所有测试模式都将被删除。

所以我的问题是:“live”模式中的函数是否有任何理由明确使用“live”。引用表和调用其他函数时的架构前缀?

经过多次谷歌搜索,我很难为明确使用架构前缀提出论据。

谢谢,感谢任何cmets。

【问题讨论】:

  • show search_path; 的结果是什么?
  • show search_path 在生产中总是返回“live”。

标签: postgresql function schema


【解决方案1】:

始终使用其模式名称限定对象是确保不会错误使用其他模式中具有相同名称的其他对象的好方法。例如,pg_catalog 架构始终在您的 search_path 上,因此可能会选择系统对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2014-01-26
    相关资源
    最近更新 更多