PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zdefiniować sekwencję do użycia podczas tworzenia tabeli w migracji ActiveRecord w Ruby on Rails 5.2?

Możesz zmienić ustawienie domyślne migracji:

change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }

Możesz użyć :bigint zamiast :integer w zależności od tego, jak ustawiona jest Twoja sekwencja i stoły. Musisz użyć lambda dla :default opcja uzyskania surowego nextval('global_seq') wyrażenie do bazy danych.

Możesz również usunąć starą sekwencję, AFAIK musisz użyć connection.execute('drop sequence ...') za to.

Jeśli pomijasz domyślny :id krok w create_table możesz to wszystko zrobić, ręcznie tworząc :id kolumna:

create_table :my_objects, id: false do |t|
  t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
  t.primary_key :id
  ...
end

Ponownie, wybór między t.bigint i t.integer zależy od tego, jak duży ma być Twój PK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wskazówki dotyczące używania klauzuli WITH w SQL

  2. Nie można wstawić JSON z PostgreSQL do Elasticsearch. Pojawia się błąd — „Wyjątek podczas wykonywania zapytania JDBC”

  3. Znajdź różnicę między znacznikami czasu w sekundach w PostgreSQL za pomocą JOOQ

  4. Jak uzyskać aktualną datę i godzinę (bez strefy czasowej) w PostgreSQL?

  5. kontekst wykonania wyzwalacza bazy danych w PostgreSQL