eby*_*rob 3 mysql limits mariadb
表名称、列名称、索引名称等...在 MySQL(和 MariaDB)中,它们的最大长度为 64 个字符。我怎样才能增加它?
此处重复:MySQL 中列名的最大长度
MySQL 文档在这里:https ://dev.mysql.com/doc/refman/5.7/en/identifiers.html
MariaDB 文档在这里:https ://mariadb.com/kb/en/mariadb/identifier-names/
麻烦的答案:切换到 PostgreSQL 并重新编译.
背景:以表名为前缀的列名与以子项目名为前缀的表名相结合。通常项目名称都很短,但两个刚刚碰撞,至少其中一个会变得更长一点。
例子:
/* One MySQL Instance for in-house applications called "MySQL" on port 3306.
* One MySQL schema (database / catalog) per application "intranet_website".
* Several sub-project prefixes per application, example: "finance_"
* Individual table-name: "invoice"
* Specific column-name: "TotalAmount" ****/
CREATE TABLE intranet_website.finance_invoice_tbl (
-- ...
finance_invoice_TotalAmount DECIMAL(20,2), -- 27 chars
-- ...
)
Run Code Online (Sandbox Code Playgroud)
这可能看起来有些过分,但请考虑一下Java 命名约定,甚至只是 .Net。
com.companyname.intranetwebsite.finance.invoice.getTotalAmount() // 63 chars
IntranetWebsite.Finance.Invoice.GetTotalAmount() // 47 chars
Run Code Online (Sandbox Code Playgroud)
注意:我没有选择为列添加表名前缀。然而,在某些情况下,这对于无需重新连接同一个表的连接来说几乎没有什么用处。我知道至少有一个具体实例,由于这些前缀,编写 SQL 代码的代码更容易实现。
正如其他人已经在评论中建议的那样,这可能无法完成。
但是,您不需要这样做。
以表名为前缀的列名是完全没有必要的,因为 SQL 提供了tablename
. columname
可用于区分列的语法。事实上,我认识的大多数程序员都会全心全意地同意,在每个列名前面加上它所属的表的名称是非常烦人的。
以项目名称为前缀的表名称也是不必要的,因为这就是目录/模式的用途。此外,大多数 RDBMS 支持catalogname
. tablename
句法。如果您有多个共享表的项目,并且您的 RDBMS 不支持跨目录关系,那么我建议您遇到项目重构问题,或者 RDBMS 选择问题,而不是表命名问题。
另外,如果您认为 64 个字符标识符很短,您应该尝试 Oracle。哦,你会享受到乐趣!
归档时间: |
|
查看次数: |
7504 次 |
最近记录: |