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