enable_case_sensitive_identifier - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

enable_case_sensitive_identifier

值(默认为粗体)

true,false

描述

一个配置值,用于确定数据库、表和列的名称标识符是否区分大小写。当用双引号括起来时,名称标识符的大小写将被保留。当您将 enable_case_sensitive_identifier 设置为 true 时,将保留名称标识符的大小写。当您将 enable_case_sensitive_identifier 设置为 false 时,将不保留名称标识符的大小写。

无论 enable_case_sensitive_identifier 配置选项的设置如何,系统都会保留双引号括起来的 username(用户名)示例。

示例

以下示例说明了如何为表名及列名创建和使用区分大小写的标识符。

-- To create and use case sensitive identifiers SET enable_case_sensitive_identifier TO true; -- Create tables and columns with case sensitive identifiers CREATE TABLE "MixedCasedTable" ("MixedCasedColumn" int); CREATE TABLE MixedCasedTable (MixedCasedColumn int); -- Now query with case sensitive identifiers SELECT "MixedCasedColumn" FROM "MixedCasedTable"; MixedCasedColumn ------------------ (0 rows) SELECT MixedCasedColumn FROM MixedCasedTable; mixedcasedcolumn ------------------ (0 rows)

以下示例显示何时不保留标识符大小写。

-- To not use case sensitive identifiers RESET enable_case_sensitive_identifier; -- Mixed case identifiers are lowercased CREATE TABLE "MixedCasedTable2" ("MixedCasedColumn" int); CREATE TABLE MixedCasedTable2 (MixedCasedColumn int); ERROR: Relation "mixedcasedtable2" already exists SELECT "MixedCasedColumn" FROM "MixedCasedTable2"; mixedcasedcolumn ------------------ (0 rows) SELECT MixedCasedColumn FROM MixedCasedTable2; mixedcasedcolumn ------------------ (0 rows)

使用说明

  • 如果您为实体化视图使用自动刷新,我们建议您在集群或工作组的参数组中设置 enable_case_sensitive_identifier 值。这样可以确保在实体化视图刷新时 enable_case_sensitive_identifier 保持不变。有关实体化视图自动刷新的信息,请参阅刷新实体化视图。有关在参数组中设置配置值的信息,请参阅《Amazon Redshift 管理指南》中的 Amazon Redshift 参数组

  • 如果您使用的是行级别安全性或动态数据屏蔽功能,我们建议在集群或工作组的参数组中设置 enable_case_sensitive_identifier 值。这可确保在创建和附加策略,然后查询应用了策略的关系的整个过程中,enable_case_sensitive_identifier 保持不变。有关行级别安全性的信息,请参阅行级别安全性。有关动态数据屏蔽的信息,请参阅动态数据掩蔽

  • 当您将 enable_case_sensitive_identifier 设置为 on 并创建表时,可以设置区分大小写的列名称。当您将 enable_case_sensitive_identifier 设置为 off 并查询表时,列名称会采用小写。这可能会产生与 enable_case_sensitive_identifier 设置为 on 时不同的查询结果。考虑以下示例:

    SET enable_case_sensitive_identifier TO on; --Amazon Redshift preserves case for column names and other identifiers. --Create a table with two columns that are identical except for the case. CREATE TABLE t ("c" int, "C" int); INSERT INTO t VALUES (1, 2); SELECT * FROM t; c | C ---+--- 1 | 2 (1 row) SET enable_case_sensitive_identifier TO off; --Amazon Redshift no longer preserves case for column names and other identifiers. SELECT * FROM t; c | c ---+--- 1 | 1 (1 row)
  • 我们建议,查询附加了动态数据掩蔽或行级安全策略的表的常规用户使用默认的 enable_case_sensitive_identifier 设置。有关行级别安全性的信息,请参阅行级别安全性。有关动态数据屏蔽的信息,请参阅动态数据掩蔽