我尝试创建15909434_user
使用如下语法命名的表:
CREATE TABLE 15909434_user ( ... )
当然会产生错误。然后,在我尝试用谷歌进行一些研究之后,我在这里找到了一篇很好的文章,它描述了:
当你在 PostgreSQL 中创建一个对象时,你给那个对象一个名字。每个表都有一个名称,每个列都有一个名称,等等。PostgreSQL 使用单一数据类型来定义所有对象名称:
name
类型。type 的值
name
是 63 个或更少字符的字符串。名称必须以字母或下划线开头;字符串的其余部分可以包含字母、数字和下划线。...
如果您发现需要创建不符合这些规则的对象,可以将名称用双引号引起来。将名称括在引号中会创建带引号的标识符。例如,您可以创建一个名称为“
3.14159
”的表——双引号是必需的,但实际上不是名称的一部分(也就是说,它们不被存储并且不计入 63 个字符的限制)。...
好的,现在我知道如何使用这种语法来解决这个问题(在表名上加上双引号):
CREATE TABLE "15909434_user" ( ... )
您可以创建表名或列名,例如"15909434_user"
and user_15909434
,但不能创建以数字开头的表名或列名而不使用双引号。
那么,我很好奇其背后的原因(除了它是一个约定)。为什么应用这个约定?是为了避免语法限制或其他原因吗?
提前感谢您的关注!