PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да дефинирам последователността, която да използвам при създаване на таблица в миграцията на ActiveRecord в Ruby on Rails 5.2?

Можете да промените настройката по подразбиране в миграция:

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

Може да искате да използвате :bigint вместо :integer в зависимост от това как са настроени вашата последователност и таблици. Трябва да използвате ламбда за :default опция за получаване на необработения nextval('global_seq') израз в базата данни.

Може да искате да премахнете и старата последователност, AFAIK ще трябва да използвате connection.execute('drop sequence ...') за това.

Ако пропускате :id по подразбиране стъпка във вашата create_table тогава можете да направите всичко, когато ръчно създадете :id колона:

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

Отново изборът между t.bigint и t.integer зависи от това колко голям искате да бъде вашият PK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да коригирам PG::DuplicatePstatement:ГРЕШКА?

  2. Как да получите списък с часови зони, поддържани от PostgreSQL?

  3. пуснете db в postgre

  4. Как да получите името на документ в Alfresco с SQL?

  5. Настройка на PostgreSQL:Ключови неща за повишаване на производителността