在Postgres中重命名一个表后,我遇到了一个奇怪的行为:如果我引用没有引号的表,它就不起作用。
例如:原来的名称是“设备”,在我将其更改为“设备”后,以下SELECT断点:
SELECT * from Devices
但是这个
SELECT * from "Devices"
按预期工作。
有什么想法吗?
答案 0 :(得分:4)
根据手册identifiers are lower-cased unless quoted。
当您重命名它时,您执行了RENAME TO "Devices"
,从而使名称为大小写混合。你现在必须在所引用的混合案例中引用它。
对于PostgreSQL,所有这些都是devices
表的名称:
devices
DEVICES
Devices
DeViCES
但这些是具有大小写混合名称的单独表的名称:
"Devices"
"DEVICES"
这是根据SQL标准,但SQL要求实现UPPER CASE
未引用的名称,其中PostgreSQL出于历史原因而lower cases
代替。
答案 1 :(得分:0)
再次将其重命名为devices
(不带双引号的小写)。然后,您可以在任何情况下引用它,包括混合大小写:
select * from dEvIceS