2013-07-22 18 views

Odpowiedz

19

RethinkDB obecnie nie obsługuje wyjątkowość ograniczenia w dziedzinach innych niż klucz podstawowy.

Można użyć tabeli pomocniczej, w której unikalne pole jest przechowywane jako klucz podstawowy, aby jednoznacznie sprawdzić unikalność w aplikacji.

+0

Dziękuję bardzo! Zasadniczo chciałbym, aby jedno pole było unikalne. Jeśli uda mi się rozwiązać to z PrimaryKey, to jest dla mnie ok! – daslicht

+4

Czy to nadal najlepsze rozwiązanie? Zostało to opublikowane 3 lata temu. – chovy

+0

@chovy prawdopodobnie, wydaje mi się, że zdecydowali się na unikatowe klucze pomocnicze, aby uniknąć tego rodzaju błędu, jak w MongoDB, pozwalając na unikalne klucze drugorzędne, ale nie gwarantując ich unikalności w całym shardzie. – Andy

-1

Stosunkowo łatwą alternatywą byłoby użycie wtórnego indeksu. W ten sposób nie miesza się z tabelami pomocniczymi.

Możesz wykonać kontrolę swojego wniosku za pomocą metody get_all (http://rethinkdb.com/api/#js:selecting_data-get_all).

+12

Problem polega na tym, że nie można tego zrobić atomowo. To znaczy. między czasem, w którym sprawdzasz indeks wtórny i okazuje się, że klucz nie istnieje, a czasem, w którym faktycznie wstawiasz dokument, ktoś inny może wstawić dokument z tym samym kluczem. –

+0

Ten link jest uszkodzony. Nie mam nic przeciwko, jeśli to nie jest gauranteed atomowy - ale czy możesz podać przykładowy kod? – chovy