sql >> Databáze >  >> RDS >> PostgreSQL

Jak definovat sekvenci, která se má použít při vytváření tabulky při migraci ActiveRecord v Ruby on Rails 5.2?

Výchozí nastavení můžete změnit při migraci:

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

Možná budete chtít použít :bigint místo :integer podle toho, jak máte nastavenou sekvenci a tabulky. Pro :default musíte použít lambda možnost získat nezpracovaný nextval('global_seq') výraz do databáze.

Možná budete chtít zrušit i starou sekvenci, AFAIK byste museli použít connection.execute('drop sequence ...') za to.

Pokud přeskočíte výchozí :id krok ve vaší create_table pak to všechno můžete udělat, když ručně vytvoříte :id sloupec:

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

Opět volba mezi t.bigint a t.integer záleží na tom, jak velký chcete mít PK.



  1. Jak vypočítat rozdíl mezi dvěma daty v T-SQL

  2. Může spravovaný ovladač Oracle správně používat async/await?

  3. Kde MySQL ukládá databázové soubory ve Windows a jaké jsou názvy souborů?

  4. Oracle dynamic sql vyhodnotit výraz v klauzuli where