标签中的最大字符数(表名,列等)

Flo*_*tig 36 postgresql identifier keyword

希望以前没有问过这个问题.有谁知道域名的字符限制?例如,如果我写这个:

CREATE DOMAIN d_complement_activite_etablissement AS character varying
Run Code Online (Sandbox Code Playgroud)

它将创建一个名称为的域:

d_complement_activite_etabliss
Run Code Online (Sandbox Code Playgroud)

(是的,我知道如何计算,但我想要更多关于这个主题的信息).

是否有可以更改此最大长度的命令?其他名称(列,表等)的长度是否相同?

Erw*_*ter 57

你问:

是否有可以更改此最大长度的命令?其他名称(列,表等)的长度是否相同?

手册的答案在这里:

系统使用不超过NAMEDATALEN-1标识符的字节; 较长的名称可以用命令编写,但它们会被截断.默认情况下,NAMEDATALEN为64,因此最大标识符长度为63 个字节.如果此限制存在问题,可以通过更改NAMEDATALEN常量来提高它 src/include/pg_config_manual.h.

大胆强调我的.

意思是,改变它的唯一方法是破解源代码并重新编译PostgreSQL.
域名是其他任何标识符.当我执行:

CREATE DOMAIN d_complement_activite_etablissement_or_even_loger_than_that AS text
Run Code Online (Sandbox Code Playgroud)

我得到了我订购的东西(刚刚在PostgreSQL 8.4和9.0上测试过; 9.1在这里没有什么不同):

d_complement_activite_etablissement_or_even_loger_than_that
Run Code Online (Sandbox Code Playgroud)

Ergo:必须有一些其他软件裁剪你的名字.

  • 请注意,手册上说的是63个字节,而不是字符。这意味着对于非ASCII字符,标识符将在大约31个字符后被截断 (2认同)