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

मैं कैसे सुनिश्चित करूं कि सक्रिय रिकॉर्ड के माध्यम से मेरी डेटाबेस तालिका में डुप्लिकेट पंक्तियां नहीं जोड़ी गई हैं?

यदि डेटा अखंडता महत्वपूर्ण है, तो आपको विशिष्टता की गारंटी के लिए सत्यापन का उपयोग नहीं करना चाहिए। यह विफल हो सकता है। विशिष्टता की गारंटी देने का एकमात्र तरीका डेटाबेस बाधा का उपयोग करना है। ऐसा इसलिए है क्योंकि रेल validates_uniqueness दौड़ की स्थिति हो सकती है।

अनुक्रमणिका जोड़ने के लिए एक माइग्रेशन बनाएँ, या इस परिवर्तन को दर्शाने के लिए अपने मौजूदा को बदलें:

नई तालिका के लिए:

class CreateVotes < ActiveRecord::Migration
  def change
    create_table :votes do |t|
      t.belongs_to :voter
      t.belongs_to :votefor
      t.string :vote # Choose the correct column type
      t.timestamps
    end
    add_index :votes, [:voter_id, :votefor_id, :vote], unique: true
  end
end

मौजूदा तालिका के लिए:

class AddUniqueIndexToVotes < ActiveRecord::Migration
  def change
    add_index :votes,  [voter_id, votefor_id, vote], unique: true
  end
end

अब आप आगे बढ़ सकते हैं और एक सत्यापन जोड़ सकते हैं, जैसा कि दूसरों ने सुझाव दिया है, यदि आप अपने उपयोगकर्ता फ़ीडबैक देना चाहते हैं कि उन्होंने पहले ही मतदान कर दिया है:

validates :voter_id, uniqueness: { scope: [:votefor_id, :vote] }


  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. कैसे मंजिल () PostgreSQL में काम करता है

  3. पोस्टग्रेएसक्यूएल न्यूलाइन कैरेक्टर

  4. पांडा कॉलम को PostgreSQL सूची में कनवर्ट करना?

  5. सशर्त लीड/अंतराल समारोह PostgreSQL?