Jak wyłączyć auto_increment na aktywnym wejściu w Railsach
Czy można utworzyć klucz podstawowy bez flagi
auto_incrementw
ActiveRecord
?
nie mogę tego zrobić
create table :blah, :id => false
ponieważ chcę mieć indeks klucza podstawowego w kolumnie. Obejrzałem się
dokumentacja
http://ar.rubyonrails.org/
ale nie znalazłem nic przydatnego.
Czy można utworzyć klucz podstawowy bez auto_increment?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
7 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Skończyło się na tym:
<pre class="lang-rb prettyprint-override">
Mam nadzieję, że to uratuje kogoś przed marnowaniem czasu na śledzenie tego lub gorzej, ... używając odpowiedzi bez sprawdzania, co robi z DB ... ponieważ wynik użycia odpowiedzi sojournera lub Jima (z moimi wersjami zależności) jest taka, że migracja jest prawidłowa, ale dozwolone są identyfikatory NULL, a duplikaty są dozwolone. Nie próbowałem odpowiedzieć Shepowi, ponieważ nie podoba mi się pomysł niespójności db/schema.rb (+1 dla Shep za mówienie bez ogródek o tej wadzie, czasami byłoby źle)
Nie jestem pewien, jakie to ma znaczenie, ale w tym rozwiązaniu mysql pokazuje go jako klucz podstawowy, taki sam jak tabela AR z domyślnym: id ... jak w:
domyślna tablica AR: id
stół z moim rozwiązaniem:
co jest dość interesujące, ponieważ SQL wygenerowany przez migrację z moim rozwiązaniem nie zawiera "KLUCZA PODSTAWOWEGO" (oczywiście) ... ale z domyślnym AR: id to robi ... więc wygląda na mysql przynajmniej dla traktuje niezerowy, unikalny klucz indeksowany jako klucz podstawowy
Hth ktoś
Anonimowy użytkownik
Potwierdzenie od:
Jedynym problemem jest to, że tracisz go w schema.rb.
Anonimowy użytkownik
Potwierdzenie od:
I to faktycznie działa w Railsach 4.0.2 i Postgresql 9.3.2.
Anonimowy użytkownik
Potwierdzenie od:
na przykład
Anonimowy użytkownik
Potwierdzenie od:
Jeśli chcesz zmienić nazwę kolumny klucza podstawowego, przekaż parametr primary_key:
Widzieć
dokumentacja create_table
http://api.rubyonrails.org/cla ... table
.
Anonimowy użytkownik
Potwierdzenie od:
Zwróć uwagę, że od czasów Railsów 5.1 klucze podstawowe to domyślnie bigint.
http://www.mccartie.com/2016/12/05/rails-5.1.html
http://www.mccartie.com/2016/12/05/rails-5.1.html
Jeśli chcesz zmienić klucz 4-bajtowy: bigint na: integer