PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để xác định trình tự để sử dụng khi tạo bảng trong quá trình di chuyển ActiveRecord trong Ruby on Rails 5.2?

Bạn có thể thay đổi giá trị mặc định khi di chuyển:

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

Bạn có thể muốn sử dụng :bigint thay vì :integer tùy thuộc vào cách thiết lập trình tự và bảng của bạn. Bạn phải sử dụng lambda cho :default tùy chọn để lấy nextval('global_seq') biểu thức vào cơ sở dữ liệu.

Bạn cũng có thể muốn loại bỏ trình tự cũ, AFAIK bạn phải sử dụng connection.execute('drop sequence ...') cho điều đó.

Nếu bạn đang bỏ qua :id mặc định trong create_table của bạn thì bạn có thể làm tất cả khi tạo :id theo cách thủ công cột:

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

Một lần nữa, sự lựa chọn giữa t.bigintt.integer phụ thuộc vào mức độ bạn muốn PK của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại tham số nên là gì trong Java khi nó là dấu thời gian không có múi giờ trong postgresql?

  2. gem install pg --with-pg-config hoạt động, gói không thành công

  3. Tên các quy trình PostgreSQL trong Windows

  4. Cách thay đổi max_connections cho Postgres thông qua lệnh SQL

  5. Làm cách nào để UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) trong PostgreSQL?