2012-04-04 55 views
2

我最近發現postgres排除了一些限制因素,這些限制令我非常興奮地詢問(至少在現在的時間範圍內,因爲數字範圍類型尚不存在)。如何在RDBMS中強制執行非重疊範圍(事務安全)?

從我所瞭解的oracle和其他RDBMS沒有一個等同的功能來排除約束。所以你唯一可以插入這種表事務安全的機會是鎖定表?還是有另一種方式?

編輯:(@ Clodoaldo) 當兩個事務插入衝突記錄時,postgres會使用行級鎖。我的問題是:如果一個關係數據庫管理系統沒有排除約束條件,那麼我認爲如果你想要非重疊範圍和交易安全性,你沒有別的辦法鎖定整個表 - 這是否正確?或者有沒有我不知道的方式?

在工作中,我不得不設計非重疊範圍的表格。我不知道任何交易安全的方式來強制數據庫中的數據一致性。當我讀到排除約束條件時,我認爲它解決了這個問題,但它不是標準的,所以我的老闆不太喜歡使用它。

+0

我不得不閱讀手冊來引入排除約束,但我仍然對你的問題感到困惑。你能詳細說明嗎?插入帶有排除約束的表時,鎖是否也會發生? – 2012-04-04 11:45:25

+0

我不知道那件事。我認爲Postgres以某種方式使用排除約束所必需的索引在兩個衝突的插入事務中的第二個提交時引發錯誤。在接下來的幾天中,我將嘗試使用排除約束。 – plainswalker 2012-04-04 14:11:57

回答