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

postgresql नेक्स्टवाल मौजूदा मूल्यों को उत्पन्न करता है

एक reset_pk_sequences! पर विधि ए> . आप इसे कॉल कर सकते हैं और यह इसे max(id) + 1 पर सेट कर देगा, जो शायद आप चाहते हैं।

कुछ परियोजनाओं में मुझे डेटा ETL'ed मिलता है जो सभी मॉडलों के लिए, या किसी निर्दिष्ट मॉडल के लिए ऐसा करने के लिए रेक कार्य को वारंट करने के लिए अक्सर पर्याप्त होता है। यहाँ कार्य है - इसे कुछ Rakefile में या अपने स्वयं के lib/कार्यों के अंतर्गत शामिल करें:

desc "Reset all sequences. Run after data imports"
task :reset_sequences, :model_class, :needs => :environment do |t, args|
  if args[:model_class]
    classes = Array(eval args[:model_class])
  else
    puts "using all defined active_record models"
    classes = []
    Dir.glob(RAILS_ROOT + '/app/models/**/*.rb').each { |file| require file }
    Object.subclasses_of(ActiveRecord::Base).select { |c|
      c.base_class == c}.sort_by(&:name).each do |klass|
        classes << klass
      end
  end
  classes.each do |klass|
      next if klass == CGI::Session::ActiveRecordStore::Session && ActionController::Base.session_store.to_s !~ /ActiveRecordStore/

        puts "reseting sequence on #{klass.table_name}"
        ActiveRecord::Base.connection.reset_pk_sequence!(klass.table_name)
    end
end

अब आप इसे rake reset_sequences का उपयोग करके सभी मॉडलों (RAIS_ROOT/app/models के अंतर्गत परिभाषित) के लिए चला सकते हैं , या किसी विशिष्ट मॉडल के लिए कक्षा के नाम में पास करके।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Heroku . पर प्यूमा क्लस्टर कॉन्फ़िगरेशन

  2. डॉकटर कंपोज़ में पोस्टग्रेज कंटेनर सर्वर पोर्ट को बदलना

  3. एक विशिष्ट कॉलम के अपडेट के बाद PostgreSQL ट्रिगर

  4. PostgreSQL में सिस्टम कॉलम को समझना

  5. Npgsql 4.0 पैरामीटर और शून्य मान