2013-07-22 42 views

回答

19

RethinkDB目前不支持對非主鍵等領域唯一性約束。

您可以使用輔助表,其中唯一字段存儲爲主鍵,以便明確檢查應用程序中的唯一性。

+0

非常感謝!基本上我只是想讓一個領域獨一無二。如果我可以用PrimaryKey解決這個問題,那對我來說可以! – daslicht

+4

這仍然是最好的解決方案嗎?這是3年前發佈的。 – chovy

+0

@chovy很可能,我認爲他們決定使用nix唯一的輔助鍵來避免類似於MongoDB的問題,它允許使用唯一的輔助鍵,但不能保證其在整個分片中的唯一性。 – Andy

-1

一個相對簡單的選擇是使用二級索引。因此不會搞亂輔助桌子。

你可以用get_all方法(http://rethinkdb.com/api/#js:selecting_data-get_all)在你的應用程序中進行檢查。

+12

問題是,你不能做到這一點原子。即在檢查二級索引並發現密鑰不存在的時間以及實際插入文檔的時間之間,其他人可以使用相同的密鑰插入文檔。 –

+0

此鏈接已損壞。我不介意它是不是原子 - 但你能提供示例代碼嗎? – chovy