在 Postgres 中重命名表后,我遇到了一个奇怪的行为:如果我引用没有引号的表,它就不起作用。
例如:原始名称是«devices»,在我将其更改为«Devices»后,以下 SELECT 中断:
SELECT * from Devices
但是这个
SELECT * from "Devices"
按预期工作。
任何的想法?
在 Postgres 中重命名表后,我遇到了一个奇怪的行为:如果我引用没有引号的表,它就不起作用。
例如:原始名称是«devices»,在我将其更改为«Devices»后,以下 SELECT 中断:
SELECT * from Devices
但是这个
SELECT * from "Devices"
按预期工作。
任何的想法?
根据手册,除非带引号,否则标识符是小写的。
当你重命名它时,你做了 a RENAME TO "Devices"
,从而使名称混合大小写。您现在必须在任何地方以引用的混合大小写引用它。
对于 PostgreSQL,所有这些都是devices
表的名称:
devices
DEVICES
Devices
DeViCES
但这些是具有混合大小写名称的单独表的名称:
"Devices"
"DEVICES"
这是根据 SQL 标准,除了 SQL 需要实现UPPER CASE
不带引号的名称,而 PostgreSQL 由于历史原因lower cases
而不是引用名称。
再次将其重命名为devices
(不带双引号的小写字母)。然后,您可以在任何情况下引用它,包括混合大小写:
select * from dEvIceS