Postgresql 重命名(ing)表I';我被迫使用带引号的标识符

Postgresql 重命名(ing)表I';我被迫使用带引号的标识符,postgresql,rename,Postgresql,Rename,在Postgres中重命名一个表之后,我遇到了一个奇怪的行为:如果我引用的表没有引号,它就不起作用 例如:原始名称为«设备»,在我将其更改为«设备»后,以下选择中断: SELECT * from Devices 但是这个 SELECT * from "Devices" 一切正常 有什么想法吗?按照手册 当您重命名它时,您将重命名为“Devices”,从而使名称大小写混合。现在,您必须在引用的混合案例中到处引用它 对于PostgreSQL,所有这些都是设备表的名称: 设备 设备 设备 设备

在Postgres中重命名一个表之后,我遇到了一个奇怪的行为:如果我引用的表没有引号,它就不起作用

例如:原始名称为«设备»,在我将其更改为«设备»后,以下选择中断:

SELECT * from Devices
但是这个

SELECT * from "Devices"
一切正常

有什么想法吗?

按照手册

当您重命名它时,您将
重命名为“Devices”
,从而使名称大小写混合。现在,您必须在引用的混合案例中到处引用它

对于PostgreSQL,所有这些都是
设备
表的名称:

  • 设备
  • 设备
  • 设备
  • 设备
但这些名称是具有混合大小写名称的单独表的名称:

  • “设备”
  • “设备”
这符合SQL标准,但SQL要求实现为
大写
未引用的名称,而PostgreSQL出于历史原因将其改为
小写

根据手册

当您重命名它时,您将
重命名为“Devices”
,从而使名称大小写混合。现在,您必须在引用的混合案例中到处引用它

对于PostgreSQL,所有这些都是
设备
表的名称:

  • 设备
  • 设备
  • 设备
  • 设备
但这些名称是具有混合大小写名称的单独表的名称:

  • “设备”
  • “设备”

这符合SQL标准,但SQL要求实现为
大写
无引号的名称,而PostgreSQL出于历史原因将其改为
小写

再次将其重命名为
设备
(小写不带双引号)。然后,您可以在任何情况下引用它,包括混合情况:

select * from dEvIceS

再次将其重命名为
设备
(小写,不带双引号)。然后,您可以在任何情况下引用它,包括混合情况:

select * from dEvIceS