PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como definir a sequência a ser usada ao criar uma tabela na migração do ActiveRecord em Ruby on Rails 5.2?


Você pode alterar o padrão em uma migração:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }

Você pode querer usar :bigint em vez de :integer dependendo de como sua sequência e tabelas estão configuradas. Você tem que usar um lambda para o :default opção para obter o nextval('global_seq') bruto expressão no banco de dados.

Você pode querer descartar a sequência antiga também, AFAIK você teria que usar connection.execute('drop sequence ...') por isso.

Se você está pulando o padrão :id passo em seu create_table então você pode fazer tudo ao criar manualmente o :id coluna:
create_table :my_objects, id: false do |t|
  t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
  t.primary_key :id
  ...
end

Novamente, a escolha entre t.bigint e t.integer depende de quão grande você quer que seu PK seja.