2012-04-04 58 views
2

我最近发现postgres排除了一些限制因素,这些限制令我非常兴奋地询问(至少在现在的时间范围内,因为数字范围类型尚不存在)。如何在RDBMS中强制执行非重叠范围(事务安全)?

从我所了解的oracle和其他RDBMS没有一个等同的功能来排除约束。所以你唯一可以插入这种表事务安全的机会是锁定表?还是有另一种方式?

编辑:(@ Clodoaldo) 当两个事务插入冲突记录时,postgres会使用行级锁。我的问题是:如果一个关系数据库管理系统没有排除约束条件,那么我认为如果你想要非重叠范围和交易安全性,你没有别的办法锁定整个表 - 这是否正确?或者有没有我不知道的方式?

在工作中,我不得不设计非重叠范围的表格。我不知道任何交易安全的方式来强制数据库中的数据一致性。当我读到排除约束条件时,我认为它解决了这个问题,但它不是标准的,所以我的老板不太喜欢使用它。

+0

我不得不阅读手册来引入排除约束,但我仍然对你的问题感到困惑。你能详细说明吗?插入带有排除约束的表时,锁是否也会发生? – 2012-04-04 11:45:25

+0

我不知道那件事。我认为Postgres以某种方式使用排除约束所必需的索引在两个冲突的插入事务中的第二个提交时引发错误。在接下来的几天中,我将尝试使用排除约束。 – plainswalker 2012-04-04 14:11:57

回答