आप माइग्रेशन में डिफ़ॉल्ट बदल सकते हैं:
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
निर्भर करता है कि आप अपने पीके को कितना बड़ा बनाना चाहते हैं।