当前位置: 首页 > 面试题库 >

PostgreSQL列值必须按顺序排列

谭京
2023-03-14
问题内容

如何在PostgreSQL中定义一列,以使每个值都必须按顺序排列,而不是使用类型时获得的顺序,而不能使serial值2插入,除非该列中已存在值1才能插入该值?


问题答案:

从理论上讲,您可以使用像这样工作的约束。(但是实际上它是行不通的。)

  1. 计算行数。
  2. 评估max(column) - min(column) + 1
  3. 比较结果。

在创建CHECK约束之前,您可能必须插入一行。如果您不这样做,则max(column)将返回NULL。一排

  1. 计算行数(1)。
  2. 评估max(column) - min(column) + 1。(1-1 + 1 = 1)
  3. 比较结果。(1 = 1)

有10排。。

  1. 计算行数(10)。
  2. 评估max(column) - min(column) + 1。(10-1 + 1 = 10)
  3. 比较结果。(10 = 10)

序列是否从1开始并不重要;如果存在的话,这种检查方法将始终显示出一个空白。如果需要保证无缝序列从1开始,则可以将其添加到CHECK约束中。

据我所知,没有任何方法可以对当前的所有dbms进行声明式处理。为此,您需要对的支持CREATE ASSERTION。(但是我可能是错的。)在PostgreSQL中,我认为您唯一的选择就是在多个AFTER触发器中包含过程代码。

我只有一张表,不需要缝隙。这是日历表。我们每晚执行一次查询,以进行这些计算,并让我知道我是否有差距。



 类似资料:
  • 问题内容: 我有以下查询,该查询基于逗号分隔的列表返回行 我希望此查询的结果以ID在列表中的顺序返回。SQL可以做到吗? 提前致谢 问题答案: 如果您需要输出以特定顺序显示,则需要使用服务器可以排序的内容来指定该顺序。不知道您要使用哪个引擎,一般的方案是创建一个临时表或使用行集构造函数将每个记录ID与所需的排序顺序配对。 例如(SQL Server)

  • 问题内容: 我是Java的新手,正在尝试按字母顺序排列术语的arrayList。(一个术语定义为一个字符和一个整数)(例如 我的代码如下: 为什么这不起作用?以及我该如何完成呢?我的arrayList称为术语,填充有Term类型 问题答案: 您在这行代码中遇到的问题。您的课程不是So 的类型,这两个对象将基于哪个属性或条件方法? 您必须使您的类为Comparable类型。和,根据您的需要覆盖该方法

  • 问题内容: 我将要有一个固定的项目清单,直到有一个随机化步骤,我才能运行查询直到执行该查询为止。 我想要以下内容: 假设is_launch_set将返回1,3,7,11,但已被随机分配到以下位置: 关于如何实现这一目标的任何想法?我在想也许是一个find_in_set,但不是很确定。 问题答案: 您可以使用以下任一方法来做到这一点: 要么 要么

  • 我按直接顺序列出了列表1<代码>列表 如何更改顺序。我不知道如何重写扩展类中的方法,请用例子写或说清楚。

  • 问题内容: 当向我添加节点时,它们不会按照我添加它们的顺序直观地显示。我一直在寻找解决方案,但尚未找到任何东西。有谁可能知道如何更改此设置? 提前致谢! 编辑 :我的代码 问题答案: 对DelegateTree使用基础实现,该实现根据其自然顺序对顶点排序( Sorted * Graph)或使用插入顺序( Ordered * Graph)。

  • 问题内容: 当我发现时,我有点希望它可以在查询部分的语句中泛化为“ X LAST” 。 事实并非如此。 我正在尝试按两列对表进行排序(简单),但是以特定的顺序(简单)获得输出,其中 一个特定值的一列最后出现 (完成它……很丑)。 假设这些列是并且(不要怪我命名列-我没有给它们命名)。仅采用2个值(“ U”和“ S”),而可以采用约100个值中的任何一个。 的值的一个子集是(在伪正则表达式中),而这