PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

रूबी ऑन रेल्स 5.2 में ActiveRecord माइग्रेशन में तालिका बनाते समय उपयोग करने के लिए अनुक्रम को कैसे परिभाषित करें?

आप माइग्रेशन में डिफ़ॉल्ट बदल सकते हैं:

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 निर्भर करता है कि आप अपने पीके को कितना बड़ा बनाना चाहते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पंक्तियों को मर्ज करें पोस्टग्रेज करें और मूल्यों को नवीनतम के साथ बदलें जब शून्य न हो

  2. स्कीमा और डेटा के बीच अंतर खोजने के लिए एक पोस्टग्रेज टूल का सुझाव दें

  3. विशिष्ट jsonb सरणी मान को अद्यतन करने के लिए jsonb_set() का उपयोग करना

  4. PostgreSQL आंतरिक C फ़ंक्शन की प्रतिलिपि बनाएँ और इसे उपयोगकर्ता परिभाषित फ़ंक्शन के रूप में लोड करें

  5. PHP pg_connect () के साथ PostgreSQL से कनेक्ट नहीं हो सकता