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

MySQL प्राथमिक कुंजी अपडेट कर रहा है

अगली बार, प्राथमिक कुंजी को अपडेट करने के लिए एकल "तालिका बदलें" कथन का उपयोग करें।

alter table xx drop primary key, add primary key(k1, k2, k3);

चीजों को ठीक करने के लिए:

create table fixit (user_2, user_1, type, timestamp, n, primary key( user_2, user_1, type) );
lock table fixit write, user_interactions u write, user_interactions write;

insert into fixit 
select user_2, user_1, type, max(timestamp), count(*) n from user_interactions u 
group by user_2, user_1, type
having n > 1;

delete u from user_interactions u, fixit 
where fixit.user_2 = u.user_2 
  and fixit.user_1 = u.user_1 
  and fixit.type = u.type 
  and fixit.timestamp != u.timestamp;

alter table user_interactions add primary key (user_2, user_1, type );

unlock tables;

जब आप ऐसा कर रहे हों तो लॉक को और अपडेट आने से रोकना चाहिए। स्पष्ट रूप से इसमें कितना समय लगता है यह आपकी तालिका के आकार पर निर्भर करता है।

मुख्य समस्या यह है कि यदि आपके पास समान टाइमस्टैम्प के साथ कुछ डुप्लीकेट हैं।



  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. अद्वितीय कुंजी का संदर्भ देने वाला सिद्धांत 2 मानचित्रण

  3. क्या मैं INSERT स्टेटमेंट के अंदर सबक्वेरी का उपयोग कर सकता हूं?

  4. Json को SQL तालिका में कनवर्ट करना

  5. एक पाठ संपादक में MySQL डेटाबेस को संपादित करने के कारण टूटे हुए क्रमबद्ध डेटा को ठीक करें?