何时/如何绑定关于 search_path 的默认值表达式函数?

2023-12-03

出于测试目的,我提供了我自己的实现now()函数是public.now(). Using search_path覆盖默认值pg_catalog.now()我自己的版本大多有效,但我有一个表,其中一个表的默认表达式为now()。显示该表会产生类似于以下内容的内容:

 start_date   | date    | not null default now()

但是,在模式保存和恢复(到测试数据库)之后,相同的显示表会生成

 start_date   | date    | not null default pg_catalog.now()

我由此假设,最初默认表达式中的函数未绑定到任何模式,并且 search_path 将用于查找正确的路径。然而,转储或恢复操作似乎将该功能“绑定”到当前功能。

我对函数“绑定状态”的理解是否正确? 有没有办法保持函数跨转储/恢复边界的无界性?


默认值在创建时解析(早期绑定!)。您在 psql、pgAdmin 或其他客户端中看到的是文本表示,但实际上,OID函数的now()创建列时默认值存储在系统目录中pg_attrdef。我引用:

adbin pg_node_tree

列默认值,在nodeToString()表示。使用pg_get_expr(adbin, adrelid)将其转换为 SQL 表达式。

改变search_path可能会导致 Postgresdisplay函数名称经过模式限定,因为当前的函数将无法正确解析它search_path.

dump和restore与你的自定义无关search_path环境。他们明确地设定了它。所以你看到的与转储/恢复周期无关。

覆盖内置函数

Placing public before pg_catalog in the search_path is a 危险游戏。弱势用户(包括您自己)通常被允许在那里编写并创建可能无意中推翻系统功能的函数 - 产生任意(或恶意)结果。

你想要一个访问受限的专用模式覆盖内置函数。使用类似这样的东西:


SET search_path = override, pg_catalog, public;
  

详情在此dba.SE 上的相关答案.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时/如何绑定关于 search_path 的默认值表达式函数? 的相关文章

  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • 在Oracle中使用IW和MM

    我使用 IW 表示每周结果 使用 MM 表示每月结果 但我总是收到错误 ORA 00979 not a GROUP BY expression 00979 00000 not a GROUP BY expression 我的疑问是这些 We
  • meta_query,如何使用关系 OR 和 AND 进行搜索?

    已解决 请参阅下面的答案 我有一个名为的自定义帖子类型BOOKS 它有几个自定义字段 名称为 TITLE AUTHOR GENRE RATING 我该如何修复我的meta query下面的代码以便仅books在自定义字段中包含搜索词 tit
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • SELECT 在 PL/pgSQL 函数中引发异常

    我想在函数内实现循环 但收到此错误 ERROR 查询没有结果数据的目标 代码 CREATE OR REPLACE FUNCTION my function ill int ndx bigint RETURNS int AS DECLARE
  • ALTER TABLE 语句与 FOREIGN KEY 约束冲突

    为什么要添加外键tblDomare表导致此错误 ALTER TABLE 语句与 FOREIGN KEY 约束 FK tblDomare PersN 5F7E2DAC 冲突 冲突发生在数据库 almu0004 表 dbo tblBana 列
  • 支持 >65k 行的 Excel VBA SQL 驱动程序

    在 Excel 2010 中通过 VBA 查询 Excel 数据时 我遇到一个有趣的问题 我正在使用这些驱动程序连接到 xls 或 xls x m 文件 Sub OpenCon ByRef theConn As Connection ByV
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • 总和和不同不会改变结果?

    我是一个新手 试图在这里解决这个问题 到目前为止还没有运气 非常感谢任何帮助 Select Distinct AB agency no ab branch no AS AGENCY BRANCH count AB agency no ab
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • Rails 的多个数据库不适用于远程数据库

    我有一个远程只读 postgres 数据库 它是通过 docker 实例维护的卡尔达诺数据库同步 https github com input output hk cardano db sync 我设法将开发数据库连接到它 它工作正常 但由
  • 从表中选择行,其中另一个表中具有相同 id 的行在另一列中具有特定值

    在 MySQL 中 如果我们有两个表 comments key value 1 foo 2 bar 3 foobar 4 barfoo and meta comment key value 1 1 2 1 3 2 4 1 我想得到来自以下人
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • 基本的多对多sql选择查询

    我认为这应该很容易 但它却在逃避我 我的帐户和帐户组之间存在多对多关系 一个帐户可以位于零个或多个组中 因此我使用标准连接表 Accounts ID BankName AcctNumber Balance AccountGroups ID
  • Oracle SQL PLS-00049:错误的绑定变量

    我收到此错误 这似乎是列拼写问题 然而 我 99 确信我拼写的所有内容都是正确的 但我看不出有任何理由会出现我所犯的错误 这是来源 CREATE OR REPLACE TRIGGER update qoh trigger AFTER INS
  • CONTAINS 不适用于 Oracle Text

    我在执行此查询时遇到问题 SELECT FROM gob attachment WHERE CONTAINS gob a document java gt 0 它给了我 ORA 29902 error in executing ODCIIn
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是

随机推荐

  • 使用 size_t 声明最大数组

    我想声明一个非常大的数组 我发现数组的最大大小是size t 它被定义为UINT MAX 所以我写了这样的代码 int arr UINT MAX 当我编译这个时 它说数组维度溢出 但是当我这样写的时候 size t s UINT MAX i
  • 为什么有人会在 SQL 子句中使用 WHERE 1=1 AND

    为什么有人会使用WHERE 1 1 AND
  • 免费的 Team Explorer 客户端是否可以在没有 Visual Studio 的情况下工作

    我们即将使用 NAnt 和 TFS 设置 Cruise Control net 我是否需要安装了 Team Explorer 的 Visual Studio 2005 2008 或者我可以仅使用免费的团队资源管理器客户端 Team Expl
  • 如何判断多边形边的哪一条边在多边形内部,哪一条边在多边形外部?

    我有一个多边形的边 凸面或凹面 我想知道 从该边的起点直行到终点 我是否必须右转或左转才能进入多边形的内部或外部 我该如何检查 沿该方向遍历整个多边形 如果你发现你是顺时针走的 那么内部就在右边 如果你逆时针走 它就在左边
  • 从应用程序重置 TCP 套接字连接

    如何重置accept在应用程序级别使用 IO Socket INET 在 perl 或 C 中编辑套接字 有一个节目binding listenTCP 端口上的 ing 以及accepts 一个客户端连接 之后它reads and writ
  • 计算电池剩余电量

    是否可以以小时和分钟为单位计算剩余电池时间 另外 它是否能够根据我是否使用某个应用程序来计算这个时间 甚至有可能获得这样的信息吗 如果您能给我建议如何做到这一点 我将非常感激 估计剩余电池寿命基于分析 正如其他人所说 您必须监听电池电量变化
  • 数据表 - 通过 JavaScript 更改语言使 UI 元素消失,而不是更改语言

    我已经使用引导样式构建了一个数据表 并希望将 ui 元素的默认语言更改为德语 https datatables net examples advanced init language file html这表明我可以在脚本中加载语言文件 当我
  • 如何确保按照通常(但不正确)的预期在 Python 类上调用 __del__ 函数?

    据我了解 del Python 类的函数并没有像很多人想象的那样受到对待 作为析构函数 我也知道有更多 Pythonic 并且可以说是更优雅的整理方式 特别是使用与构造 然而 当编写可能被不熟悉 python 方式的读者使用的代码时 当清理
  • 如何使用 WCF 服务生成 XML 输出?

    我设置了以下界面 ServiceContract public interface IService1 OperationContract String Ping 其实现如下 public class Service1 IService1
  • 使用 fseek 逐行向后读取文件

    如何使用 fseek 逐行向后读取文件 代码可能会有所帮助 必须是跨平台的 纯php的 提前谢谢了 regards Jera 问题是使用 fseek 询问 因此只能假设性能是一个问题 而 file 不是解决方案 这是使用 fseek 的简单
  • 实例引用在 Swift 中真的有效吗?

    我先写了 Objective C 代码 NSMutableString aStrValue NSMutableString stringWithString Hello NSMutableDictionary aMutDict NSMuta
  • SQLSTATE[HY010]:插入期间函数序列错误:0

    问题 在非常简单的插入查询期间 使用 PDO 和 DB2 数据库的 ODBC 驱动程序 驱动程序返回以下错误 SQLSTATE HY010 Function sequence error 0 Microsoft Driver Manager
  • 重用代码Android NDK

    我发现很多教程展示了如何开始使用 NDK 开发 Android 应用程序 但我有一个相当 简单 愚蠢 的问题 请考虑以下两个教程 http mobile tutsplus com tutorials android ndk tutorial
  • 删除字符串内的所有换行符

    我正在尝试从字符串中删除所有换行符 我已经阅读了如何做到这一点 但似乎由于某种原因我无法这样做 这是我正在做的一步一步 string1 Hello n World string2 string1 strip n print string2
  • 世博会搜索引擎

    我遵循这个tutorial将搜索添加到我的 Expo React Native 应用程序 最后一步之后我出现了这个错误 photo 我应该怎么办 这是程序的一部分 这是我的导航屏幕之一 其中有其他屏幕的链接 function InfoScr
  • 在 shell 脚本中操作数组(由 php-cli 打印)

    我是 shell 脚本的新手 今天学到了很多东西 这是这个问题的延伸将 PHP CLI 打印的值分配给 shell 变量 我得到了在 shell 脚本中读取变量的解决方案 现在如何操作数组 如果我在 PHP 代码中准备一个数组并打印它 然后
  • 根据序列前后的值替换 NaN 序列

    如果有人能帮助我解决这个问题 我将不胜感激 我有一个向量 A NaN 1 1 1 1 NaN NaN NaN NaN NaN 2 2 2 NaN NaN NaN 2 NaN NaN 3 NaN NaN 我想根据这个逻辑填充 NaN 值 1
  • i3 或 i7 处理器中的 clflush()

    是否可以在 i3 i7 处理器中使用 clflush 指令 函数来刷新缓存并检查缓存是否为空 如果是这样 请建议正确的使用格式 直接在 C 中或在 C 中内联汇编 有人告诉我 clflush 确实可以在 core 2 双核处理器之外正常工作
  • vmalloc_to_pfn 在 Linux 32 系统上返回 32 位地址。为什么它会砍掉 PAE 物理地址的高位?

    我在用着vmalloc to pfn 获取 32 位 PAE Linux 系统上的物理地址 看起来 vmalloc to pfn 返回 unsigned long 这意味着它在 32 位系统上是 32 位 在 64 位系统上是 64 位 在
  • 何时/如何绑定关于 search_path 的默认值表达式函数?

    出于测试目的 我提供了我自己的实现now 函数是public now Using search path覆盖默认值pg catalog now 我自己的版本大多有效 但我有一个表 其中一个表的默认表达式为now 显示该表会产生类似于以下内容