在 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表的名称:
devicesDEVICESDevicesDeViCES但这些是具有混合大小写名称的单独表的名称:
"Devices""DEVICES"这是根据 SQL 标准,除了 SQL 需要实现UPPER CASE不带引号的名称,而 PostgreSQL 由于历史原因lower cases而不是引用名称。
再次将其重命名为devices(不带双引号的小写字母)。然后,您可以在任何情况下引用它,包括混合大小写:
select * from dEvIceS