问题标签 [exclusion-constraint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
243 浏览

postgresql - 使用 Postgres 排除约束限制匹配特定条件的表行数?

如果我有一个像这样的轮胎表的 Postgresql 数据库模式(用户有很多轮胎):

我想强制执行“用户只能有 4 个轮胎”的约束。

实现这一点的一种天真的方法是:

,将结果与 4 进行比较,如果它低于 4,则插入。这可能是竞争条件,因此是一种幼稚的方法。

我不想添加计数列。我怎样才能使用排除约束来做到这一点(或者我可以做到这一点)?如果排除约束不可能,那么规范的方法是什么?

0 投票
1 回答
393 浏览

c# - 如何确保条目具有不重叠的时间范围?

我需要确保我的数据库只包含其中两个或更多列是唯一的条目。UNIQUE这可以通过对这些列的约束轻松实现。

就我而言,我只需要禁止重叠时间范围的重复。该表有valid_fromvalid_to列。在某些情况下,可能首先需要通过设置使活动条目过期valid_to = now,然后插入一个调整为valid_from = nowand的新条目valid_to = infinity

我似乎可以在没有任何问题的情况下使先前的条目过期UPDATE,但是插入新条目似乎很麻烦,因为我的基列当前是UNIQUE,因此无法再次添加。

我想添加valid_fromandvalid_to作为UNIQUE约束的一部分,但这只会使约束更加松散,并允许存在重复重叠的时间范围。

如何进行约束以确保不存在重叠的重复项valid_fromvalid_to tsrange

我似乎在寻找EXCLUDE USING GIST,但它似乎不支持多列?这似乎对我不起作用:

0 投票
1 回答
223 浏览

postgresql - Postgres:避免与其他条件重叠范围的最佳方法

简化的 MN 连接表

我想要一个明显的排除规则,即如果fkey字段相同,则日期没有重叠。(如果键不同,则不排除。)

到目前为止,我最好的想法是添加贡献的多维数据集模块并在所有三个字段上创建一个 gist 多列索引。但是虽然它看起来像一个 3-D 立方体,重叠约束将在其中两个中退化。那么这里是什么

这种使用附加模块的解决方案是否最适合相对常见的用例?

0 投票
1 回答
453 浏览

c# - PostgreSQL exclusion constraints in a bitemporal setting?

I am currently working with a bitemporal application, which stores data entries using 4 timestamps:

The first two state when the given entry is valid_from and valid_to, and the other two are when the entry has been registered_from, and assumed as true until registration_to.

In this time setting I need to make sure that each row has unique column within the same valid_from and valid_to known within the same registration_from and registration_to across multiple entries.

So I need to check every row before insertion (pseudo-code):

I have tried with an exclusion like this:

But I am not sure whether I am using it correctly. I am currently always getting an error, since the check is done in opposite order, and among the incorrect ones. Is there a way to make this exclusion check nested, such that it only check validation overlap if the registration is overlapping, and throws an error if this is true?

How do I go about that in PostreSQL?

0 投票
1 回答
340 浏览

sql - 什么是 PostgreSQL 中的排除约束?Microsoft SQL Server 中的相应术语(和示例 SQL 脚本)是什么?

我读了一本书

在此处输入图像描述

排除约束

排除约束的含义是什么?Microsoft SQL Server 中的相应术语(和示例 SQL 脚本)是什么?

0 投票
2 回答
33 浏览

sql - 如何从 PostgreSQL 中的 2 列中获取唯一值

我有一列"id_a"和一列"id_b"

“id_a”是一个整数[] 类型。

"id_b"是一个 int 类型。

我得想办法验证没有更多的id_a的值与相同的id_b

其他示例:

0 投票
1 回答
107 浏览

sql - Postgres 触发器检查与现有记录的日期重叠

我有一个表,有 2 列,开始日期和结束日期。

  • 开始日期为必填项
  • 结束日期是可选的(所以这是一个基本上永远不会结束的时期)

我正在创建一个触发器,以确保没有记录与其他记录重叠,到目前为止我做了这个

你可以看到我正在一个一个地测试所有的重叠条件,这个关于我使用直到 9999 年的日期解决的非结束时间段的问题,以使所有工作正常。

我分享的这段代码正在工作,在它的最后你可以找到一个以失败结尾的插入语句(与给定的情况有关),

这些检查很多是“手动”的,我想知道这是否可以通过使用 intersect 或类似的查询来实现,但我还没有找到可行的方法


编辑基于@GMB 方法,这是最终结果

在我的实际场景中,我还有一列定义记录是否处于活动状态,因此我在定义中添加了 where 子句。我还移到了单独的ADD CONSTRAINT语句,因为我的表已经存在,所以我只添加了这个。

0 投票
1 回答
20 浏览

r - 根据 R 中的条件包含满足条件创建一个新列

我的数据集如下所示:

你能帮我用R编码吗?

谢谢!

我需要创建一个将被称为的新列METABOLIC_SYNDROME。要使参与者进入TRUE该列,METABOLIC_SYNDROME需要满足以下条件的 3/5:

  • 腰围:女性≥89,男性≥102
  • 甘油三酯: ≥150
  • 高密度脂蛋白:≤40男性,≤50女性
  • 高血压:是的
  • 糖尿病:是的
0 投票
0 回答
39 浏览

sql - 确保没有重叠的约束,但仅限于某些情况下,并且需要解决冲突?

我在 PostgreSQL 数据库中有一个表,我在其中存储跨时间段的预订。此类预订之间必须至少间隔 45 分钟。我目前在表上有这个约束:

这可以防止添加开始时间在某些现有行的结束时间之后不到 45 分钟或结束时间在现有开始时间之前不到 45 分钟的新行。现在,预订可以处于不同的状态,例如“已请求”和“已接受”。45 分钟规则仅适用于已接受的预订(只要它们都被“请求”,预订应该可以重叠)。我试图通过添加WHERE status='accepted'约束来解决这个问题,但这不会捕获添加与已接受的预订重叠的新预订(默认为“已请求”)。我需要一个 WHERE 子句,该子句将导致每次现有行具有 status='accepted' 时评估约束,即使新行是“请求的”。

我还需要自动解决当我有多个重叠预订并将其中一个更改为“已接受”时出现的冲突。我有第三种状态,“已拒绝”,我希望更新现在导致冲突的所有行。

是否有可能使用排除约束来做到这一点?我是否需要寻找其他方法来处理问题?我想在数据库中实现它,因为如果我不这样做,我会遇到各种各样的并发问题和诸如此类的问题。

0 投票
1 回答
35 浏览

sql - 如何施加这种排除约束?

我有一个键值表。

我想施加一个约束,如果一个键有一个值为 NULL 的条目,它不能有任何其他条目。我怎么做?

澄清一下:我想允许(“key1”,“value1”),(“key1”,“value2”)。但是如果我有(“key2”,NULL),我不想允许(“key2”,“value3”)。