↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1
历史版本PostgreSQL 8.2 已于 2011 年 12 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

17.12. 版本和平台兼容性 #

17.12.1. 以前的 PostgreSQL 版本 #

add_missing_from (boolean) #

打开时,如果查询引用的表尚未出现在FROM子句中,会自动把它添加进去。这一行为不符合 SQL 标准,许多人也不喜欢它,因为它可能掩盖错误(例如本应引用表的别名却引用了表本身)。默认值为off。启用此变量是为了与 8.1 之前的 PostgreSQL 版本兼容,那时默认允许这种行为。

注意,即使启用了此变量,查询每引用一个隐式FROM项,仍会发出一条警告消息。建议用户更新自己的应用,把查询引用的所有表都写进查询的FROM子句(对DELETE则是USING子句),不再依赖这一行为。

array_nulls (boolean) #

这个参数控制数组输入解析器是否把未用引号的NULL识别为一个值为空值的数组元素。默认为on,允许输入包含空值的数组值。但是PostgreSQL 8.2 之前的版本不支持数组中的空值,并且因此将把NULL当作指定一个值为字符串“NULL”的正常数组元素。为了向后兼容那些要求旧行为的应用,这个变量可以被设置为off。

注意即使这个变量为off也能够创建包含空值的数组值。

backslash_quote (string) #

这个参数控制字符串字面量中的单引号是否能够用\'来表示。首选的 SQL 标准的方法是将其双写(''),但是PostgreSQL在历史上也接受\'。不过使用\'容易导致安全风险,因为在某些客户端字符集编码中,有多字节字符的最后一个字节在数值上等价于 ASCII 的\。如果客户端代码没有做到正确转义,那么就可能遭到 SQL 注入攻击。如果服务器拒绝看起来带有被反斜线转义的单引号的查询,那么就可以避免这种风险。backslash_quote的可用值是on(总是允许\')、off(总是拒绝)以及safe_encoding(只有客户端编码不允许在多字节字符中存在 ASCII \时允许)。safe_encoding是默认设置。

注意在符合标准的字符串字面量中,\就表示\。这个参数只影响不符合标准的字面量的处理,包括转义字符串语法(E'...')。

default_with_oids (boolean) #

此参数控制在既未指定WITH OIDS也未指定WITHOUT OIDS时, CREATE TABLE和CREATE TABLE AS是否在新建表中包含 OID 列。 它也决定SELECT INTO创建的表是否包含 OID。 在PostgreSQL 8.1 中, default_with_oids默认为 off;在更早版本的 PostgreSQL 中,默认为打开。

在用户表中使用 OID 已被弃用,因此大多数安装应让此变量保持禁用状态。 需要为特定表使用 OID 的应用应在创建表时指定WITH OIDS。 可以启用此变量,以兼容不遵循这种做法的旧应用。

escape_string_warning (boolean) #

打开时,如果在普通字符串字面量中('...'语法)出现了 一个反斜线(\)并且standard_conforming_strings为关闭,那么就会发出一个警告。默认值是on。

希望使用反斜线作为转义符的应用应该被修改来使用转义字符串语法(E'...'),因为为了 SQL 兼容性,普通字符串的默认行为将在将来的版本中改变。这个变量可以被启用来帮助检测将会受损的应用。

regex_flavor (string) #

正则表达式的“风格”可以设置为 advanced、extended 或 basic。 默认值是 advanced。extended 设置可用于与 PostgreSQL 7.4 之前的版本精确向后兼容。详见 第 9.7.3.1 节。

sql_inheritance (boolean) #

这个设置控制继承语义。如果设为off,各种命令默认不包括子表;基本上相当于一个隐式的ONLY关键字。它是为了与 7.1 之前的版本兼容而提供的。更多信息见第 5.8 节。

standard_conforming_strings (boolean) #

控制普通字符串字面量('...')是否按照 SQL 标准把反斜线当普通文本。当前默认值为off,即PostgreSQL保持其把反斜线当作转义字符的历史行为。为了改进与 SQL 标准的兼容性,默认值将在将来的版本中改为on。应用可以检查这个参数来判断字符串字面量如何被处理。这个参数的存在也可以被当做转义字符串语法(E'...')被支持的标志。如果一个应用希望反斜线被当做转义字符,应该使用转义字符串语法。

17.12.2. 平台和客户端兼容性 #

transform_null_equals (boolean) #

当打开时,形如expr = NULL(或NULL = expr)的表达式将被当做expr IS NULL,也就是说,如果expr计算结果为空值则返回真,否则返回假。正确的 SQL 标准兼容的expr = NULL行为总是返回空值(未知)。因此这个参数默认为off。

不过,在Microsoft Access里的过滤表单生成的查询似乎使用expr = NULL来测试空值,因此,如果你使用这个接口访问数据库,你可能想把这个选项打开。因为expr = NULL形式的表达式总是返回空值(使用 SQL 标准解释),它们不是非常有用并且在普通应用中也不常见,因此这个选项实际上没有什么危害。但是新用户常常对涉及空值的表达式语义感到困惑,因此这个选项默认为关闭。

请注意这个选项只影响= NULL形式,而不影响其它比较操作符或者其它与一些涉及等值操作符的表达式在计算上等效的其他表达式(例如IN)。因此,这个选项不能普遍修复错误的程序写法。

相关信息请见第 9.2 节。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。