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.