Postgresql 检查文本字段中的长度限制-n约束,而不是vartext(n)use

Postgresql 检查文本字段中的长度限制-n约束,而不是vartext(n)use,postgresql,conventions,Postgresql,Conventions,SQL语言,特别是PostgreSQL 9+,有很多方法可以做同样的事情。。。但在许多情况下(参见注释一节了解基本原理),我们需要“削减多样性”并选择标准方式 有一个。将成为PostgreSQL(!)中的“表达字符串的标准方式”,避免在项目讨论中浪费时间并转换类似格式。。。 但是,如何使用text保留大小限制约束 我使用CHECK(char\u length(field)我希望代码尽可能短,以便在CHECK约束中使用length(string)。在这种情况下,我看不到char\u length有

SQL语言,特别是PostgreSQL 9+,有很多方法可以做同样的事情。。。但在许多情况下(参见注释一节了解基本原理),我们需要“削减多样性”并选择标准方式

有一个。将成为PostgreSQL(!)中的“表达字符串的标准方式”,避免在项目讨论中浪费时间并转换类似格式。。。 但是,如何使用
text
保留大小限制约束


我使用
CHECK(char\u length(field)我希望代码尽可能短,以便在CHECK约束中使用
length(string)
。在这种情况下,我看不到
char\u length
有什么特殊用途-它会占用更多的“代码空间”

在内部,它们都是
textlen

你要注意超过1字节的符号。在这种情况下,我将使用<代码> OCTETE长度< /C>。作为一个例子,考虑字符<代码> <代码>,当被请求长度时,返回1,当被要求为OCTETEL长度时,2。在不同长度执行的数据库系统之间迁移是很痛苦的。< /P>


我相信“最佳实践”的一个好来源是遵循

它表示在列中使用
CHECK
约束意味着绑定到特定列的列约束

它提到了与任何列定义分开编写的表约束,并在多个列之间强制执行数据核心性

基本上,在我参与的项目中,为了可读性和维护的目的,我遵循这个规则

我甚至不考虑为这样的事情创建触发器。对我来说,它们是为更复杂的任务而设计的。我不认为在触发器中执行简单的数据正确性规则是有原因的。


我想不出任何其他解决方案会像标准解决方案一样基本,并且仍然像上面提到的那样简单。

我喜欢尽可能地缩短代码,这样它就可以使用
长度(字符串)
在CHECK约束中。在这种情况下,我看不到字符长度有什么特殊用途,它会占用更多的“代码空间”

在内部,它们都是
textlen

你要注意超过1字节的符号。在这种情况下,我将使用<代码> OCTETE长度< /C>。作为一个例子,考虑字符<代码> <代码>,当被请求长度时,返回1,当被要求为OCTETEL长度时,2。在不同长度执行的数据库系统之间迁移是很痛苦的。< /P>


我相信“最佳实践”的一个好来源是遵循

它表示在列中使用
CHECK
约束意味着绑定到特定列的列约束

它提到了与任何列定义分开编写的表约束,并在多个列之间强制执行数据核心性

基本上,在我参与的项目中,为了可读性和维护的目的,我遵循这个规则

我甚至不考虑为这样的事情创建触发器。对我来说,它们是为更复杂的任务而设计的。我不认为在触发器中执行简单的数据正确性规则是有原因的。

我想不出任何其他解决方案会像标准解决方案那样基本,并且仍然像上面提到的那样简单。

这个推理所依据的是过时的。唯一反对
varchar(N)的论点
是否更改
N
需要重写表,到,情况不再如此

这给了
varchar(N)
一个明显的优势,因为增加
N
基本上是瞬时的,而更改
text
字段上的
CHECK
约束将涉及重新检查整个表。

此推理所基于的是过时的。唯一反对
varchar(N)的论点
是否更改
N
需要重写表,到,情况不再如此


这就给出了
varchar(N)
一个明显的优势,因为增加
N
基本上是即时的,而更改
文本
字段上的
检查
约束将涉及重新检查整个表。

PS:投票结束前,在这里解释你的观点。这是一个关于约定的问题。PS:投票结束前,在这里解释你的观点。是吗一个关于约定的问题。正如我所说的“有很多方法可以做同样的事情”…SQL规模问题重复为函数规模问题:
length(x)
=
char\u length(x)
=
length(x,'utf8')
(可以测试x=
joséą
)。“规范”是什么名称?没有说明什么是别名,什么是原始函数。关于使用
octet\u length
:最佳做法是避免使用此函数(!),因为今天(2016)的通用编码是UTF8,默认语义是“计数UTF8字符”。这也是使用
char\u length
的基本原理。PG指南如下:“最佳实践的来源”,我同意许多情况,但在这个问题的背景下,它是沉默的。它也不是无偏见的:1)有些,因为“展示多样性”有点像“品牌战略”;2)它对社区“不太开放”,如前维基百科或“请在此发表评论”页面。没有什么是“身体”“在pg社区。。。所以我说“这类建议的合理记录”Ops也是如此,对不起,冗长的“元讨论”,主要评论是:“1.1、1.2、2或3,最佳实践是什么?”,我理解你的选择是1.1,是吗?1.1有一些考虑。@PeterKrauss是的,它是1.1。但无论你选择什么,只要你一直坚持,它就不会有问题,因为我说“有很多方法可以做同样的事情”。。。SQL规模问题作为函数规模问题重复出现: