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

तालिका में डुप्लिकेट प्रविष्टियों को कैसे रोकें

ईमेल पते . पर आपके पास कोई अनन्य कुंजी नहीं है . यह आपकी सबसे अच्छी आशा है, जितने जॉन डो सिस्टम में हो सकते हैं। तो पूरे नाम पर एक अद्वितीय समग्र अनुक्रमणिका कभी भी एक अच्छा विचार नहीं है।

कोई एक INSERT IGNORE जारी कर सकता है जो डुप्लिकेट उल्लंघन के बाद साथ-साथ चलता है जैसे कि कुछ भी नहीं होता है (यह अत्यधिक अनुशंसित नहीं है, और आपके मामले में संभव नहीं है क्योंकि ईमेल पर आपकी अनूठी बाधा मौजूद नहीं है)। ऐसा करने में सबसे बड़ी समस्या यह है कि आपकी प्रवृत्ति (पढ़ें:शायद होगा) जो कुछ हो रहा है उसके प्रवाह का सारा नियंत्रण खो दें और अवांछित डेटा के साथ छोड़ दें। इसलिए इसका उपयोग तब तक न करें, जब तक कि आप पेशेवर न हों।

कोई जारी कर सकता है और डुप्लिकेट कुंजी अपडेट पर डालें ए> (a.k.a. IODKU) जिसके लिए एक अद्वितीय कुंजी की भी आवश्यकता होती है (एक अद्वितीय सम्मिश्र भी हो सकता है)। जैसे, एक नई पंक्ति नहीं होगी बल्कि पंक्ति के लिए एक अद्यतन होगा। उदाहरण के तौर पर, 4 कॉलम वाली एक नई पंक्ति डाली जा सकती है, लेकिन दोहराव के उल्लंघन पर, केवल दो कॉलमों पर एक अपडेट किया जा सकता है, जैसे कि

एक अनदेखी कॉलम id int . पर एक पीके के नीचे मानते हुए , और emailAddr . पर एक अद्वितीय कुंजी

insert person(firstName,lastName,emailAddr) values 'Joe','Smith','[email protected]' 
on duplicate key update firstName='Joe',lastName='Smith'

ईमेलएड्र पर यह अनूठी कुंजी है जो यह काम करती है। केवल 1 पंक्ति प्रति ईमेलAddr के साथ छोड़ दिया, कभी भी।

तो, आपके पास असीमित जो स्मिथ हो सकते हैं, लेकिन प्रति ईमेल पता केवल 1 पंक्ति।

उपरोक्त तालिका के लिए तालिका बनाएं ऐसा दिख सकता है

create table person
(  id int auto_increment primary key,
   firstName varchar(50) not null,
   lastName varchar(50) not null,
   emailAddr varchar(150) not null,
   unique key(emailAddr)  -- without this, IODKU will not work
);

तालिका बनने के बाद आप बाधाओं को जोड़ने के लिए वैकल्पिक तालिका आदेश भी जारी कर सकते हैं। उसमें मौजूद डेटा के आधार पर, कॉल विफल हो सकती है।

Mysql डुप्लीकेट कुंजी अपडेट पर डालें , और तालिका बदलें मैनुअल पेज।

मैं इसे फिर से कहूंगा, उचित स्कीमा सेटअप के बिना, IODKU काम नहीं करेगा और आपको अवांछित पंक्तियों के साथ छोड़ दिया जाएगा। तो इसके बारे में आलसी मत बनो। सेटअप स्कीमा पहले इसे सफलता की अनुमति देना (अद्वितीय कुंजियों के साथ), फिर IODKU का उपयोग करने की ओर बढ़ें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql त्रुटि लॉग में दिनांक कैसे जोड़ें?

  2. सिद्धांत के साथ एक से अनेक बहुरूपी संबंध बनाना

  3. पीएचपी पीडीओ एसक्यूएल सभी पंक्तियों के बजाय डेटा की केवल एक पंक्ति लौटा रहा है

  4. MySQL में IF स्टेटमेंट का सही सिंटैक्स क्या है?

  5. MySQL2 / रूबी 1.9.3 / रेल 3.2 . पर विभाजन दोष