sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan definerer man den sekvens, der skal bruges, når man opretter en tabel i ActiveRecord-migrering i Ruby on Rails 5.2?

Du kan ændre standarden i en migrering:

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

Du vil måske bruge :bigint i stedet for :integer afhængig af hvordan din rækkefølge og tabeller er sat op. Du skal bruge en lambda til :default mulighed for at hente den rå nextval('global_seq') udtryk ind i databasen.

Du vil måske også droppe den gamle sekvens, AFAIK skal du bruge connection.execute('drop sequence ...') for det.

Hvis du springer standard :id over trin i din create_table så kan du gøre det hele, når du manuelt opretter :id kolonne:

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

Igen, valget mellem t.bigint og t.integer afhænger af, hvor stor du vil have din PK til at være.



  1. mysqldump ukendt mulighed ingen bip

  2. Måder at undgå MySQLdb's kommandoer ude af synkronisering; du kan ikke køre denne kommando nu (2014) undtagelse

  3. PHP hente data fra tabelrækken og gemme til variabel

  4. BCP returnerer ingen fejl, men kopierer heller ikke nogen rækker