PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menentukan urutan yang akan digunakan saat membuat tabel dalam migrasi ActiveRecord di Ruby on Rails 5.2?

Anda dapat mengubah default dalam migrasi:

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

Anda mungkin ingin menggunakan :bigint bukannya :integer tergantung pada bagaimana urutan dan tabel Anda diatur. Anda harus menggunakan lambda untuk :default opsi untuk mendapatkan nextval('global_seq') mentah mentah ekspresi ke dalam database.

Anda mungkin ingin membuang urutan lama juga, AFAIK Anda harus menggunakan connection.execute('drop sequence ...') untuk itu.

Jika Anda melewatkan :id default langkah di create_table . Anda maka Anda dapat melakukan semuanya ketika Anda secara manual membuat :id kolom:

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

Sekali lagi, pilihan antara t.bigint dan t.integer tergantung pada seberapa besar Anda ingin PK Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kumpulan c3p0 tidak dapat membuat koneksi. Bagaimana cara men-debug ini?

  2. Fungsi sebagai parameter untuk fungsi lain di Postgres

  3. PL/pgSQL Array Baris

  4. Bagaimana Atand() Bekerja di PostgreSQL

  5. Bagaimana cara mendapatkan posisi kecocokan regexp dalam string di PostgreSQL?