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

एक अद्वितीय बाधा के साथ परमाणु बहु-पंक्ति अद्यतन

PostgreSQL के साथ इसे केवल संस्करण 9.0 का उपयोग करके "अच्छे" तरीके से हल किया जा सकता है क्योंकि आप अद्वितीय बाधाओं को वहां स्थगित करने के लिए परिभाषित कर सकते हैं।

PostgreSQL 9.0 के साथ आप बस इतना ही करेंगे:

create table label (
  id_label serial not null,
  rank integer not null,
  title text not null,
  constraint pri primary key (id_label)
);
alter table label add constraint unique_rank unique (rank) 
      deferrable initially immediate;

फिर अपडेट इतना आसान है:

begin;
set constraints unique_rank DEFERRED;
update rank
   set rank = case when rank = 20 then 10 else 20 end
   where id_label in (1,2);
commit;

संपादित करें:
यदि आप अपने लेन-देन के अंदर आस्थगित करने के लिए बाधा सेट करने से परेशान नहीं होना चाहते हैं, तो आप बस बाधा को initially deferred के रूप में परिभाषित कर सकते हैं ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP का उपयोग करके पिछले 7 दिनों को कैसे प्राप्त करें

  2. प्रति घंटे एक को छोड़कर हर रिकॉर्ड को कैसे हटाएं

  3. Mysqldump द्वारा बनाई गई विशाल लाइन लंबाई से कैसे निपटें

  4. क्या MySQL प्रश्नों में डेटाबेस नामों को पैरामीटर करने का कोई सुरक्षित तरीका है?

  5. मैं mysql-table (जहां लेट और लॉन्ग स्टोर किया गया) में क्वेरी कैसे कर सकता हूं जो इनपुट किए गए स्थान (अक्षांश और लंबे) के निकटतम स्थान हैं?