我最近发现了 postgres 排除约束,这完全可以满足我的要求(好吧,至少现在是时间范围,因为数字范围类型还不存在)。
据我了解,oracle 和其他 RDBMS 没有等效的功能来排除约束。所以你唯一的机会让插入这样一个表事务安全是锁定表?还是有其他方法?
编辑:(@ Clodoaldo)当两个事务插入冲突记录时,postgres 确实使用行级锁。我的问题是:如果 RDBMS 不具有排除约束功能,我认为如果您想要不重叠的范围和事务安全性,除了锁定整个表之外别无其他机会 - 对吗?或者有没有我不知道的方法?
在工作中,有几次我不得不设计不重叠范围的表格。我不知道任何事务安全的方式来强制数据库中的数据一致性。当我读到排除约束时,我认为它解决了这个问题,但它是非标准的,所以我的老板不太热衷于使用它。