作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有一个定义如下的表:
range (
id bigint primary key,
colourId int references colour(id),
smellId int references smell(id),
from bigint,
to bigint
)
这个表实际上是一个非常大的表的缩减 View :
item (
id bigint primary key,
colourId int references colour(id),
smellId int references smell(id),
CONSTRAINT item_colour_smell_unique UNIQUE (colour, smell, id)
)
我想翻译 range
表中的 item_colour_smell_unique
约束。它应该观察 [from, to]
范围的重叠,同时考虑 colourId
和 smellId
列值。
最佳答案
请注意,任何基于触发器的解决方案本质上都是不安全的,不受竞争条件的影响,例如当两个并发事务插入一个范围冲突的行时,由于“隔离”ACID 属性(只能看到提交的数据),它们都不会看到另一个冲突的行。
一些解决方案:
PostgreSQL 开发人员 Jeff Davis has been writing about this lately并将在 PostgreSQL 8.5 中实现范围冲突约束
关于postgresql - 如何在 PostgreSQL 数据库中声明范围重叠约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1680465/
我是一名优秀的程序员,十分优秀!