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

ON CONFLICT क्लॉज में कई विरोध_लक्ष्य का उपयोग करें

ON CONFLICT विरोध का पता लगाने के लिए एक अद्वितीय अनुक्रमणिका* की आवश्यकता होती है। तो आपको बस दोनों स्तंभों पर एक अद्वितीय अनुक्रमणिका बनाने की आवश्यकता है:

t=# create table t (id integer, a text, b text);
CREATE TABLE
t=# create unique index idx_t_id_a on t (id, a);
CREATE INDEX
t=# insert into t values (1, 'a', 'foo');
INSERT 0 1
t=# insert into t values (1, 'a', 'bar') on conflict (id, a) do update set b = 'bar';
INSERT 0 1
t=# select * from t;
 id | a |  b  
----+---+-----
  1 | a | bar

* अद्वितीय अनुक्रमणिका के अतिरिक्त, आप बहिष्करण बाधाओं का भी उपयोग कर सकते हैं। ये अद्वितीय बाधाओं की तुलना में कुछ अधिक सामान्य हैं। मान लीजिए कि आपकी तालिका में id . के लिए कॉलम थे और valid_time (और valid_time एक tsrange है ), और आप डुप्लीकेट id . को अनुमति देना चाहते थे s, लेकिन अतिव्यापी समयावधियों के लिए नहीं। एक अद्वितीय बाधा आपकी मदद नहीं करेगी, लेकिन एक बहिष्करण बाधा के साथ आप कह सकते हैं "नए रिकॉर्ड को बाहर करें यदि उनके id एक पुराने id . के बराबर है और उनका valid_time . भी इसके valid_time को ओवरलैप करता है ।"



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL ट्यूनिंग:प्रदर्शन बढ़ाने के लिए मुख्य बातें

  2. पोस्टग्रेएसक्यूएल भौतिकीकृत दृश्य

  3. PostgreSQL उपयोगकर्ता समूह NL

  4. PostgreSQL के लिए उपलब्ध डेटाबेस आरेख टूल का अवलोकन

  5. PostgreSQL और C# डेटाटाइप्स