PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie definiere ich die zu verwendende Reihenfolge beim Erstellen einer Tabelle in der ActiveRecord-Migration in Ruby on Rails 5.2?

Sie können die Standardeinstellung bei einer Migration ändern:

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

Vielleicht möchten Sie :bigint verwenden statt :integer abhängig davon, wie Ihre Sequenz und Tabellen eingerichtet sind. Sie müssen ein Lambda für :default verwenden Option, um den rohen nextval('global_seq') zu erhalten Ausdruck in die Datenbank.

Vielleicht möchten Sie auch die alte Sequenz löschen, AFAIK müssten Sie connection.execute('drop sequence ...') verwenden dafür.

Wenn Sie die Standardeinstellung :id überspringen Schritt in Ihrer create_table dann können Sie alles tun, indem Sie die :id manuell erstellen Spalte:

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

Wieder die Wahl zwischen t.bigint und t.integer hängt davon ab, wie groß Ihr PK sein soll.