sql >> Database >  >> RDS >> PostgreSQL

Hoe de te gebruiken volgorde definiëren bij het maken van een tabel in ActiveRecord-migratie in Ruby on Rails 5.2?

U kunt de standaard in een migratie wijzigen:

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

Misschien wilt u :bigint . gebruiken in plaats van :integer afhankelijk van hoe uw volgorde en tabellen zijn ingesteld. Je moet een lambda gebruiken voor de :default optie om de onbewerkte nextval('global_seq') . te krijgen expressie in de database.

Misschien wilt u ook de oude reeks verwijderen, AFAIK zou u connection.execute('drop sequence ...') moeten gebruiken daarvoor.

Als u de standaard :id . overslaat stap in je create_table dan kun je het allemaal doen wanneer je handmatig de :id . maakt kolom:

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

Nogmaals, de keuze tussen t.bigint en t.integer hangt af van hoe groot je wilt dat je PK is.



  1. Database-optimalisatie:indexen

  2. Kolomwaarde van vorige rij in postgre ophalen kan de vensterfunctie niet gebruiken in UPDATE

  3. PHP MySQL Google Chart JSON - Compleet voorbeeld

  4. PostgreSQL - volgende seriële waarde in een tabel