【问题标题】:Maximum characters in labels (table names, columns etc)标签中的最大字符数(表名、列等)
【发布时间】:2012-01-03 00:42:36
【问题描述】:

希望以前没有人问过这个问题。有人知道域名的字数限制吗? 例如,如果我这样写:

CREATE DOMAIN d_complement_activite_etablissement AS character varying

它将创建一个具有以下名称的域:

d_complement_activite_etabliss

(是的,我知道如何数数,但我想了解有关该主题的更多信息)。

有没有可以改变这个最大长度的命令?其他名称(列、表等)的长度是否相同?

【问题讨论】:

    标签: postgresql keyword identifier


    【解决方案1】:

    你问:

    有没有可以改变这个最大长度的命令?是这个长度吗 其他名称(列、表等)也一样?

    manual answers here:

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

    我的大胆强调。

    更改它的唯一方法是破解源代码并重新编译 PostgreSQL。
    域名与其他任何标识符一样是标识符。当我执行时:

    CREATE DOMAIN d_complement_activite_etablissement_or_even_loger_than_that AS text
    

    我得到了我订购的东西(在 PostgreSQL 8.4 - 11 上测试):

    d_complement_activite_etablissement_or_even_loger_than_that
    

    Ergo:在您和您的数据库之间一定有其他软件可以裁剪名称。

    【讨论】:

    • 嗯...这很奇怪。它现在也适用于我。我使用 Postgre 9.1 并从 pgAdmin 运行命令。谢谢
    • @FlorinVistig:pgAdmin 的 SQL 编辑器有一个不错的功能:当您在执行前选择部分代码时,只有 选择的部分 会被执行,而忽略其他所有内容。你知道的,对吧?听起来你被绊倒了。
    • 我不知道这个功能。但我在存在该功能的 SQL Server 上工作得更多,我知道要远离它。不知道是什么原因...
    • 请注意,手册说的是 63 字节,而不是字符。这意味着,对于非 ASCII 字符,标识符在大约 31 个字符后被截断
    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    相关资源
    最近更新 更多